<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.collada.org/2008/03/COLLADASchema" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.collada.org/2008/03/COLLADASchema" elementFormDefault="qualified" version="1.5.0" xml:lang="EN" xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd">
	<xs:import namespace="http://www.w3.org/1998/Math/MathML" schemaLocation="http://www.w3.org/Math/XMLSchema/mathml2/mathml2.xsd"/>
	<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
	<xs:annotation>
		<xs:documentation>
	 		 COLLADA Schema
	 		 Version 1.5.0 (August 6, 2008)

	 		 Copyright (C) 2008 The Khronos Group Inc., Sony Computer Entertainment Inc.
			 All Rights Reserved.

			 Khronos is a trademark of The Khronos Group Inc.
			 COLLADA is a trademark of Sony Computer Entertainment Inc. used by permission by Khronos.

			 Note that this software document is distributed on an "AS IS" basis, with ALL EXPRESS AND 
			 IMPLIED WARRANTIES AND CONDITIONS DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED
			 WARRANTIES AND CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR 
			 PURPOSE, AND NON-INFRINGEMENT.
		</xs:documentation>
	</xs:annotation>
	<xs:simpleType name="float_type">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="int_type">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:simpleType name="uint_type">
		<xs:restriction base="xs:unsignedLong"/>
	</xs:simpleType>
	<xs:simpleType name="sidref_type">
		<xs:restriction base="xs:string">
			<xs:pattern value="(([\i-[:]][\c-[:]]*)|.)(/[\i-[:\.]][\c-[:]]*)+((\.[\i-[:]][\c-[:]]*)|(\([0-9]+\)){1,2})?"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="sid_type">
		<xs:restriction base="xs:NCName"/>
	</xs:simpleType>
	<xs:simpleType name="list_of_bools_type">
		<xs:list itemType="xs:boolean"/>
	</xs:simpleType>
	<xs:simpleType name="list_of_floats_type">
		<xs:list itemType="float_type"/>
	</xs:simpleType>
	<xs:simpleType name="list_of_hex_binary_type">
		<xs:list itemType="xs:hexBinary"/>
	</xs:simpleType>
	<xs:simpleType name="list_of_ints_type">
		<xs:list itemType="int_type"/>
	</xs:simpleType>
	<xs:simpleType name="list_of_names_type">
		<xs:list itemType="xs:Name"/>
	</xs:simpleType>
	<xs:simpleType name="list_of_idrefs_type">
		<xs:list itemType="xs:Name"/>
	</xs:simpleType>
	<xs:simpleType name="list_of_sidrefs_type">
		<xs:list itemType="sidref_type"/>
	</xs:simpleType>
	<xs:simpleType name="list_of_tokens_type">
		<xs:list itemType="xs:token"/>
	</xs:simpleType>
	<xs:simpleType name="list_of_uints_type">
		<xs:list itemType="uint_type"/>
	</xs:simpleType>
	<xs:simpleType name="bool2_type">
		<xs:restriction base="list_of_bools_type">
			<xs:minLength value="2"/>
			<xs:maxLength value="2"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="bool3_type">
		<xs:restriction base="list_of_bools_type">
			<xs:minLength value="3"/>
			<xs:maxLength value="3"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="bool4_type">
		<xs:restriction base="list_of_bools_type">
			<xs:minLength value="4"/>
			<xs:maxLength value="4"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="bool2x2_type">
		<xs:restriction base="list_of_bools_type">
			<xs:minLength value="4"/>
			<xs:maxLength value="4"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="bool2x3_type">
		<xs:restriction base="list_of_bools_type">
			<xs:minLength value="6"/>
			<xs:maxLength value="6"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="bool2x4_type">
		<xs:restriction base="list_of_bools_type">
			<xs:minLength value="8"/>
			<xs:maxLength value="8"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="bool3x2_type">
		<xs:restriction base="list_of_bools_type">
			<xs:minLength value="6"/>
			<xs:maxLength value="6"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="bool3x3_type">
		<xs:restriction base="list_of_bools_type">
			<xs:minLength value="9"/>
			<xs:maxLength value="9"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="bool3x4_type">
		<xs:restriction base="list_of_bools_type">
			<xs:minLength value="12"/>
			<xs:maxLength value="12"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="bool4x2_type">
		<xs:restriction base="list_of_bools_type">
			<xs:minLength value="8"/>
			<xs:maxLength value="8"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="bool4x3_type">
		<xs:restriction base="list_of_bools_type">
			<xs:minLength value="12"/>
			<xs:maxLength value="12"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="bool4x4_type">
		<xs:restriction base="list_of_bools_type">
			<xs:minLength value="16"/>
			<xs:maxLength value="16"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="float2_type">
		<xs:restriction base="list_of_floats_type">
			<xs:minLength value="2"/>
			<xs:maxLength value="2"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="float3_type">
		<xs:restriction base="list_of_floats_type">
			<xs:minLength value="3"/>
			<xs:maxLength value="3"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="float4_type">
		<xs:restriction base="list_of_floats_type">
			<xs:minLength value="4"/>
			<xs:maxLength value="4"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="float7_type">
		<xs:restriction base="list_of_floats_type">
			<xs:minLength value="7"/>
			<xs:maxLength value="7"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="float2x2_type">
		<xs:restriction base="list_of_floats_type">
			<xs:minLength value="4"/>
			<xs:maxLength value="4"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="float2x3_type">
		<xs:restriction base="list_of_floats_type">
			<xs:minLength value="6"/>
			<xs:maxLength value="6"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="float2x4_type">
		<xs:restriction base="list_of_floats_type">
			<xs:minLength value="8"/>
			<xs:maxLength value="8"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="float3x2_type">
		<xs:restriction base="list_of_floats_type">
			<xs:minLength value="6"/>
			<xs:maxLength value="6"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="float3x3_type">
		<xs:restriction base="list_of_floats_type">
			<xs:minLength value="9"/>
			<xs:maxLength value="9"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="float3x4_type">
		<xs:restriction base="list_of_floats_type">
			<xs:minLength value="12"/>
			<xs:maxLength value="12"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="float4x2_type">
		<xs:restriction base="list_of_floats_type">
			<xs:minLength value="8"/>
			<xs:maxLength value="8"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="float4x3_type">
		<xs:restriction base="list_of_floats_type">
			<xs:minLength value="12"/>
			<xs:maxLength value="12"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="float4x4_type">
		<xs:restriction base="list_of_floats_type">
			<xs:minLength value="16"/>
			<xs:maxLength value="16"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="int2_type">
		<xs:restriction base="list_of_ints_type">
			<xs:minLength value="2"/>
			<xs:maxLength value="2"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="int3_type">
		<xs:restriction base="list_of_ints_type">
			<xs:minLength value="3"/>
			<xs:maxLength value="3"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="int4_type">
		<xs:restriction base="list_of_ints_type">
			<xs:minLength value="4"/>
			<xs:maxLength value="4"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="int2x2_type">
		<xs:restriction base="list_of_ints_type">
			<xs:minLength value="4"/>
			<xs:maxLength value="4"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="int2x3_type">
		<xs:restriction base="list_of_ints_type">
			<xs:minLength value="6"/>
			<xs:maxLength value="6"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="int2x4_type">
		<xs:restriction base="list_of_ints_type">
			<xs:minLength value="8"/>
			<xs:maxLength value="8"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="int3x2_type">
		<xs:restriction base="list_of_ints_type">
			<xs:minLength value="6"/>
			<xs:maxLength value="6"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="int3x3_type">
		<xs:restriction base="list_of_ints_type">
			<xs:minLength value="9"/>
			<xs:maxLength value="9"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="int3x4_type">
		<xs:restriction base="list_of_ints_type">
			<xs:minLength value="12"/>
			<xs:maxLength value="12"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="int4x2_type">
		<xs:restriction base="list_of_ints_type">
			<xs:minLength value="8"/>
			<xs:maxLength value="8"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="int4x3_type">
		<xs:restriction base="list_of_ints_type">
			<xs:minLength value="12"/>
			<xs:maxLength value="12"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="int4x4_type">
		<xs:restriction base="list_of_ints_type">
			<xs:minLength value="16"/>
			<xs:maxLength value="16"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="digits_type">
		<xs:restriction base="xs:unsignedByte">
			<xs:minInclusive value="1"/>
			<xs:maxInclusive value="17"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="magnitude_type">
		<xs:restriction base="xs:short">
			<xs:minInclusive value="-324"/>
			<xs:maxInclusive value="308"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="morph_method_enum">
		<xs:annotation>
			<xs:documentation>
			An enumuerated type specifying the acceptable morph methods.
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="NORMALIZED"/>
			<xs:enumeration value="RELATIVE"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="node_enum">
		<xs:annotation>
			<xs:documentation>
			An enumerated type specifying the acceptable node types.
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="JOINT"/>
			<xs:enumeration value="NODE"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="sampler_behavior_enum">
		<xs:annotation>
			<xs:documentation>
			An enumerated type specifying the acceptable sampler pre and post behavior attribute types.
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="CONSTANT"/>
			<xs:enumeration value="CYCLE"/>
			<xs:enumeration value="CYCLE_RELATIVE"/>
			<xs:enumeration value="GRADIENT"/>
			<xs:enumeration value="OSCILLATE"/>
			<xs:enumeration value="UNDEFINED"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="urifragment_type">
		<xs:annotation>
			<xs:documentation>
			This urifragment_type element is used for URI reference which can only reference a resource declared within it's same document.
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="(#(.*))"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="up_axis_enum">
		<xs:annotation>
			<xs:documentation>
			An enumerated type specifying the acceptable up-axis values.
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="X_UP"/>
			<xs:enumeration value="Y_UP"/>
			<xs:enumeration value="Z_UP"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="version_enum">
		<xs:annotation>
			<xs:documentation>
			An enumerated type specifying the acceptable document versions.
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="1.5.0"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="input_global_type">
		<xs:annotation>
			<xs:documentation>
			The input_global_type element is used to represent inputs that can reference external resources.
			</xs:documentation>
		</xs:annotation>
		<xs:attribute name="semantic" type="xs:NMTOKEN" use="required">
			<xs:annotation>
				<xs:documentation>
				The semantic attribute is the user-defined meaning of the input connection. Required attribute.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="source" type="xs:anyURI" use="required">
			<xs:annotation>
				<xs:documentation>
				The source attribute indicates the location of the data source. Required attribute.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="input_local_type">
		<xs:annotation>
			<xs:documentation>
			The input_local_type element is used to represent inputs that can only reference resources declared in the same document.
			</xs:documentation>
		</xs:annotation>
		<xs:attribute name="semantic" type="xs:NMTOKEN" use="required">
			<xs:annotation>
				<xs:documentation>
				The semantic attribute is the user-defined meaning of the input connection. Required attribute.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="source" type="urifragment_type" use="required">
			<xs:annotation>
				<xs:documentation>
				The source attribute indicates the location of the data source. Required attribute.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="input_local_offset_type">
		<xs:annotation>
			<xs:documentation>
			The input_local_offset_type element is used to represent indexed inputs that can only reference resources declared in the same document.
			</xs:documentation>
		</xs:annotation>
		<xs:attribute name="offset" type="uint_type" use="required">
			<xs:annotation>
				<xs:documentation>
				The offset attribute represents the offset into the list of indices.  If two input elements share 
				the same offset, they will be indexed the same.  This works as a simple form of compression for the 
				list of indices as well as defining the order the inputs should be used in.  Required attribute.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="semantic" type="xs:NMTOKEN" use="required">
			<xs:annotation>
				<xs:documentation>
				The semantic attribute is the user-defined meaning of the input connection. Required attribute.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="source" type="urifragment_type" use="required">
			<xs:annotation>
				<xs:documentation>
				The source attribute indicates the location of the data source. Required attribute.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="set" type="uint_type">
			<xs:annotation>
				<xs:documentation>
				The set attribute indicates which inputs should be grouped together as a single set. This is helpful 
				when multiple inputs share the same semantics. 
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="targetable_float_type">
		<xs:annotation>
			<xs:documentation>
			The targetable_float_type element is used to represent elements which contain a single float value which can 
			be targeted for animation.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="float_type">
				<xs:attribute name="sid" type="sid_type">
					<xs:annotation>
						<xs:documentation>
						The sid attribute is a text string value containing the sub-identifier of this element. This 
						value must be unique within the scope of the parent element. Optional attribute.
						</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="targetable_float3_type">
		<xs:annotation>
			<xs:documentation>
			The targetable_float3_type element is used to represent elements which contain a float3 value which can 
			be targeted for animation.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="float3_type">
				<xs:attribute name="sid" type="sid_type">
					<xs:annotation>
						<xs:documentation>
						The sid attribute is a text string value containing the sub-identifier of this element. 
						This value must be unique within the scope of the parent element. Optional attribute.
						</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="token_array_type">
		<xs:annotation>
			<xs:documentation>
			The token_array_type element declares the storage for a homogenous array of xs:token string values.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="list_of_tokens_type">
				<xs:attribute name="id" type="xs:ID">
					<xs:annotation>
						<xs:documentation>
							The id attribute is a text string containing the unique identifier of this element. 
							This value must be unique within the instance document. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="name" type="xs:token">
					<xs:annotation>
						<xs:documentation>
							The name attribute is the text string name of this element. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="count" type="uint_type" use="required">
					<xs:annotation>
						<xs:documentation>
							The count attribute indicates the number of values in the array. Required attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="idref_array_type">
		<xs:annotation>
			<xs:documentation>
			The IDREF_array element declares the storage for a homogenous array of ID reference values.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="xs:IDREFS">
				<xs:attribute name="id" type="xs:ID">
					<xs:annotation>
						<xs:documentation>
							The id attribute is a text string containing the unique identifier of this element. This value 
							must be unique within the instance document. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="name" type="xs:token">
					<xs:annotation>
						<xs:documentation>
							The name attribute is the text string name of this element. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="count" type="uint_type" use="required">
					<xs:annotation>
						<xs:documentation>
							The count attribute indicates the number of values in the array. Required attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="name_array_type">
		<xs:annotation>
			<xs:documentation>
			The Name_array element declares the storage for a homogenous array of Name string values.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="list_of_names_type">
				<xs:attribute name="id" type="xs:ID">
					<xs:annotation>
						<xs:documentation>
							The id attribute is a text string containing the unique identifier of this element. 
							This value must be unique within the instance document. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="name" type="xs:token">
					<xs:annotation>
						<xs:documentation>
							The name attribute is the text string name of this element. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="count" type="uint_type" use="required">
					<xs:annotation>
						<xs:documentation>
							The count attribute indicates the number of values in the array. Required attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="bool_array_type">
		<xs:annotation>
			<xs:documentation>
			The bool_array element declares the storage for a homogenous array of boolean values.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="list_of_bools_type">
				<xs:attribute name="id" type="xs:ID">
					<xs:annotation>
						<xs:documentation>
							The id attribute is a text string containing the unique identifier of this element. 
							This value must be unique within the instance document. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="name" type="xs:token">
					<xs:annotation>
						<xs:documentation>
							The name attribute is the text string name of this element. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="count" type="uint_type" use="required">
					<xs:annotation>
						<xs:documentation>
							The count attribute indicates the number of values in the array. Required attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="float_array_type">
		<xs:annotation>
			<xs:documentation>
			The float_array element declares the storage for a homogenous array of floating point values.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="list_of_floats_type">
				<xs:attribute name="id" type="xs:ID">
					<xs:annotation>
						<xs:documentation>
							The id attribute is a text string containing the unique identifier of this element. This value 
							must be unique within the instance document. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="name" type="xs:token">
					<xs:annotation>
						<xs:documentation>
							The name attribute is the text string name of this element. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="count" type="uint_type" use="required">
					<xs:annotation>
						<xs:documentation>
							The count attribute indicates the number of values in the array. Required attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="digits" type="digits_type" default="6">
					<xs:annotation>
						<xs:documentation>
							The digits attribute indicates the number of significant decimal digits of the float values that 
							can be contained in the array. The default value is 6. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="magnitude" type="magnitude_type" default="38">
					<xs:annotation>
						<xs:documentation>
							The magnitude attribute indicates the largest exponent of the float values that can be contained 
							in the array. The default value is 38. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="int_array_type">
		<xs:annotation>
			<xs:documentation>
			The int_array element declares the storage for a homogenous array of integer values.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="list_of_ints_type">
				<xs:attribute name="id" type="xs:ID">
					<xs:annotation>
						<xs:documentation>
							The id attribute is a text string containing the unique identifier of this element. 
							This value must be unique within the instance document. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="name" type="xs:token">
					<xs:annotation>
						<xs:documentation>
							The name attribute is the text string name of this element. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="count" type="uint_type" use="required">
					<xs:annotation>
						<xs:documentation>
							The count attribute indicates the number of values in the array. Required attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="minInclusive" type="xs:integer" default="-2147483648">
					<xs:annotation>
						<xs:documentation>
							The minInclusive attribute indicates the smallest integer value that can be contained in 
							the array. The default value is -2147483648. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="maxInclusive" type="xs:integer" default="2147483647">
					<xs:annotation>
						<xs:documentation>
							The maxInclusive attribute indicates the largest integer value that can be contained in 
							the array. The default value is 2147483647. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="param_type">
		<xs:annotation>
			<xs:documentation>
			The param element declares parametric information regarding its parent element.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="name" type="xs:token">
					<xs:annotation>
						<xs:documentation>
							The name attribute is the text string name of this element. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="sid" type="sid_type">
					<xs:annotation>
						<xs:documentation>
							The sid attribute is a text string value containing the sub-identifier of this element. 
							This value must be unique within the scope of the parent element. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="semantic" type="xs:NMTOKEN">
					<xs:annotation>
						<xs:documentation>
							The semantic attribute is the user-defined meaning of the parameter. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="type" type="xs:NMTOKEN" use="required">
					<xs:annotation>
						<xs:documentation>
							The type attribute indicates the type of the value data. This text string must be understood 
							by the application. Required attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="accessor_type">
		<xs:annotation>
			<xs:documentation>
			The accessor element declares an access pattern to one of the array elements: float_array, 
			int_array, Name_array, bool_array, token_array, and IDREF_array. The accessor element describes access 
			to arrays that are organized in either an interleaved or non-interleaved manner, depending 
			on the offset and stride attributes.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="param" type="param_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The accessor element may have any number of param elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="count" type="uint_type" use="required">
			<xs:annotation>
				<xs:documentation>
					The count attribute indicates the number of times the array is accessed. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="offset" type="uint_type" default="0">
			<xs:annotation>
				<xs:documentation>
					The offset attribute indicates the index of the first value to be read from the array. 
					The default value is 0. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="source" type="xs:anyURI" use="required">
			<xs:annotation>
				<xs:documentation>
					The source attribute indicates the location of the array to access using a URL expression. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="stride" type="uint_type" default="1">
			<xs:annotation>
				<xs:documentation>
					The stride attribute indicates number of values to be considered a unit during each access to 
					the array. The default value is 1, indicating that a single value is accessed. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="p_type">
		<xs:annotation>
			<xs:documentation>
			The p element represents primitive data for the primitive types (lines, linestrips, polygons, 
			polylist, triangles, trifans, tristrips). The p element contains indices that reference into 
			the parent's source elements referenced by the input elements.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="list_of_uints_type"/>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="lookat_type">
		<xs:annotation>
			<xs:documentation>
			The lookat element contains a position and orientation transformation suitable for aiming a camera.
			The lookat element contains three mathematical vectors within it that describe: 
			1.	The position of the object;
			2.	The position of the interest point;
			3.	The direction that points up.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="float3x3_type">
				<xs:attribute name="sid" type="sid_type">
					<xs:annotation>
						<xs:documentation>
							The sid attribute is a text string value containing the sub-identifier of this element. 
							This value must be unique within the scope of the parent element. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="matrix_type">
		<xs:annotation>
			<xs:documentation>
			Matrix transformations embody mathematical changes to points within a coordinate systems or the 
			coordinate system itself. The matrix element contains a 4-by-4 matrix of floating-point values.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="float4x4_type">
				<xs:attribute name="sid" type="sid_type">
					<xs:annotation>
						<xs:documentation>
							The sid attribute is a text string value containing the sub-identifier of this element. 
							This value must be unique within the scope of the parent element. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="scale_type">
		<xs:annotation>
			<xs:documentation>
			The scale element contains a mathematical vector that represents the relative proportions of the 
			X, Y and Z axes of a coordinated system.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:restriction base="targetable_float3_type"/>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="skew_type">
		<xs:annotation>
			<xs:documentation>
			The skew element contains an angle and two mathematical vectors that represent the axis of 
			rotation and the axis of translation.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="float7_type">
				<xs:attribute name="sid" type="sid_type">
					<xs:annotation>
						<xs:documentation>
							The sid attribute is a text string value containing the sub-identifier of this element. 
							This value must be unique within the scope of the parent element. Optional attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="translate_type">
		<xs:annotation>
			<xs:documentation>
			The translate element contains a mathematical vector that represents the distance along the 
			X, Y and Z-axes.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:restriction base="targetable_float3_type"/>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="image_source_type">
		<xs:choice>
			<xs:element name="ref" type="xs:anyURI">
				<xs:annotation>
					<xs:documentation>Initialize purely from a file.  Assume the characteristics of the file.  If it is a complex format like DDS this may include cube maps, volumes,  mips, etc.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="hex">
				<xs:annotation>
					<xs:documentation>The data element contains a sequence of hexadecimal encoded binary octets representing the embedded image data.  The format attribute is use the determine which codec decodes the image's descriptions and data.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="list_of_hex_binary_type">
							<xs:attribute name="format" type="xs:token" use="required">
								<xs:annotation>
									<xs:documentation>The format attribute is a text string value that indicates the image format.  Examples include "DDS", "EXR", "BMP", "JPG", and "PNG".  Note that all of these formats have internal descriptors of size, bpp, etc.</xs:documentation>
								</xs:annotation>
							</xs:attribute>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="image_mips_type">
		<xs:attribute name="levels" type="xs:unsignedInt" use="required">
			<xs:annotation>
				<xs:documentation>Zero is max levels = 1 + floor(log2(max(w, h, d)))
in both OpenGL and DirectX.  One is no mips.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="auto_generate" type="xs:boolean" use="required">
			<xs:annotation>
				<xs:documentation>regenerate the mipmaps based on information loaded into mip0</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:simpleType name="image_face_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="POSITIVE_X"/>
			<xs:enumeration value="NEGATIVE_X"/>
			<xs:enumeration value="POSITIVE_Y"/>
			<xs:enumeration value="NEGATIVE_Y"/>
			<xs:enumeration value="POSITIVE_Z"/>
			<xs:enumeration value="NEGATIVE_Z"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="image_format_hint_channels_enum">
		<xs:annotation>
			<xs:documentation>The per-texel layout of the format.  The length of the string indicate how many channels there are and the letter respresents the name of the channel.  There are typically 0 to 4 channels.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="RGB">
				<xs:annotation>
					<xs:documentation>RGB color  map</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="RGBA">
				<xs:annotation>
					<xs:documentation>RGB color + Alpha map often used for color + transparency or other things packed into channel A like specular power </xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="RGBE">
				<xs:annotation>
					<xs:documentation>RGB color + shared exponent for HDR </xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="L">
				<xs:annotation>
					<xs:documentation>Luminance map often used for light mapping </xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="LA">
				<xs:annotation>
					<xs:documentation>Luminance+Alpha map often used for light mapping </xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="D">
				<xs:annotation>
					<xs:documentation>Depth map often used for displacement, parellax, relief, or shadow mapping.  Depth is depth seperate from Luminace to make special hardware considerations </xs:documentation>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="image_format_hint_precision_enum">
		<xs:annotation>
			<xs:documentation>Each channel of the texel has a precision.  Typically these are all linked together.  An exact format lay lower the precision of an individual channel but applying a higher precision by linking the channels together may still convey the same information.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="DEFAULT">
				<xs:annotation>
					<xs:documentation>Designer does not care as long as it provides "reasonable" percision and performance</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="LOW">
				<xs:annotation>
					<xs:documentation>For integers this typically represents 8 bits.  For floats typically 16 bits.</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="MID">
				<xs:annotation>
					<xs:documentation>For integers this typically represents 8 to 24 bits.  For floats typically 16 to 32 bits.</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="HIGH">
				<xs:annotation>
					<xs:documentation>For integers this typically represents 16 to 32 bits.  For floats typically 24 to 32 bits.</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="MAX">
				<xs:annotation>
					<xs:documentation>Typically 32 bits or 64 bits if available.  64 bit has been seperated into it's own catagory beyond HIGH because it typically has significant performance impact and is beyond what non CAD software considers high percision.</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="image_format_hint_range_enum">
		<xs:annotation>
			<xs:documentation>Each channel represents a range of values. Some example ranges are signed or unsigned integers, or between between a clamped range such as 0.0f to 1.0f, or high dynamic range via floating point</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="SNORM">
				<xs:annotation>
					<xs:documentation>Format is representing a decimal value that remains within the -1 to 1 range. Implimentation could be integer-fixedpoint or floats.</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="UNORM">
				<xs:annotation>
					<xs:documentation>Format is representing a decimal value that remains within the 0 to 1 range. Implimentation could be integer-fixedpoint or floats.</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="SINT">
				<xs:annotation>
					<xs:documentation>Format is representing signed integer numbers.  (ex. 8bits = -128 to 127)</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="UINT">
				<xs:annotation>
					<xs:documentation>Format is representing unsigned integer numbers.  (ex. 8bits = 0 to 255)</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="FLOAT">
				<xs:annotation>
					<xs:documentation>Format should support full floating point ranges.  High precision is expected to be 32bit. Mid precision may be 16 to 32 bit.  Low precision is expected to be 16 bit.</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="channel_type">
		<xs:annotation>
			<xs:documentation>
			The channel element declares an output channel of an animation.
			</xs:documentation>
		</xs:annotation>
		<xs:attribute name="source" type="urifragment_type" use="required">
			<xs:annotation>
				<xs:documentation>
					The source attribute indicates the location of the sampler using a URL expression. 
					The sampler must be declared within the same document. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="target" type="xs:token" use="required">
			<xs:annotation>
				<xs:documentation>
					The target attribute indicates the location of the element bound to the output of the sampler. 
					This text string is a path-name following a simple syntax described in Address Syntax. 
					Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="sampler_type">
		<xs:annotation>
			<xs:documentation>
			The sampler element declares an N-dimensional function used for animation. Animation function curves 
			are represented by 1-D sampler elements in COLLADA. The sampler defines sampling points and how to 
			interpolate between them.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="input" type="input_local_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The input element must occur at least one time. These inputs are local inputs.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. This value 
					must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="pre_behavior" type="sampler_behavior_enum">
			<xs:annotation>
				<xs:documentation>
					Indicates what the sampled value should be before the first key.
		</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="post_behavior" type="sampler_behavior_enum">
			<xs:annotation>
				<xs:documentation>
					Indicates what the sampled value should be after the last key.
		</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:simpleType name="altitude_mode_enum">
		<xs:annotation>
			<xs:documentation> 
            The legal values for the mode attribute on the altitute element in a 
geographic_location element. 
            </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="absolute"/>
			<xs:enumeration value="relativeToGround"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="technique_type">
		<xs:annotation>
			<xs:appinfo>enable-xmlns</xs:appinfo>
			<xs:documentation>
			The technique element declares the information used to process some portion of the content. Each 
			technique conforms to an associated profile. Techniques generally act as a "switch". If more than 
			one is present for a particular portion of content, on import, one or the other is picked, but 
			usually not both. Selection should be based on which profile the importing application can support.
			Techniques contain application data and programs, making them assets that can be managed as a unit.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="profile" type="xs:NMTOKEN" use="required">
			<xs:annotation>
				<xs:documentation>
					The profile attribute indicates the type of profile. This is a vendor defined character 
					string that indicates the platform or capability target for the technique. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="extra_type">
		<xs:annotation>
			<xs:documentation>
			The extra element declares additional information regarding its parent element.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The extra element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="technique" type="technique_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						This element must contain at least one non-common profile technique.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. This value 
					must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="type" type="xs:NMTOKEN">
			<xs:annotation>
				<xs:documentation>
					The type attribute indicates the type of the value data. This text string must be understood by 
					the application. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="polylist_type">
		<xs:annotation>
			<xs:documentation>
			The polylist element provides the information needed to bind vertex attributes together and 
			then organize those vertices into individual polygons. The polygons described in polylist can 
			contain arbitrary numbers of vertices. Unlike the polygons element, the polylist element cannot 
			contain polygons with holes.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="input" type="input_local_offset_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The input element may occur any number of times. This input is a local input with the 
						offset and set attributes.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="vcount" type="list_of_uints_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The vcount element contains a list of integers describing the number of sides for each polygon 
						described by the polylist element. The vcount element may occur once.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="p" type="p_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The polylist element may have zero or one p element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="count" type="uint_type" use="required">
			<xs:annotation>
				<xs:documentation>
					The count attribute indicates the number of polygon primitives. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="material" type="xs:NCName">
			<xs:annotation>
				<xs:documentation>
					The material attribute declares a symbol for a material. This symbol is bound to a material at 
					the time of instantiation. If the material attribute is not specified then the lighting and 
					shading results are application defined. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="polygons_type">
		<xs:annotation>
			<xs:documentation>
			The polygons element provides the information needed to bind vertex attributes together and 
			then organize those vertices into individual polygons. The polygons described can contain 
			arbitrary numbers of vertices. These polygons may be self intersecting and may also contain holes.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="input" type="input_local_offset_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The input element may occur any number of times. This input is a local input with the 
						offset and set attributes.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="p" type="p_type">
					<xs:annotation>
						<xs:documentation>
							The p element may occur any number of times.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="ph">
					<xs:annotation>
						<xs:documentation>
							The ph element may occur any number of times. It describes a polygon with holes.
							</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="p" type="p_type">
								<xs:annotation>
									<xs:documentation>
										There may only be one p element.
										</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="h" type="list_of_uints_type" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>
										The h element represents a hole in the polygon specified. There must be at least one h element.
										</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:choice>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="count" type="uint_type" use="required">
			<xs:annotation>
				<xs:documentation>
					The count attribute indicates the number of polygon primitives. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="material" type="xs:NCName">
			<xs:annotation>
				<xs:documentation>
					The material attribute declares a symbol for a material. This symbol is bound to a material 
					at the time of instantiation. If the material attribute is not specified then the lighting 
					and shading results are application defined. Optional attribute. 
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="linestrips_type">
		<xs:annotation>
			<xs:documentation>
			The linestrips element provides the information needed to bind vertex attributes together and 
			then organize those vertices into connected line-strips. Each line-strip described by the mesh 
			has an arbitrary number of vertices. Each line segment within the line-strip is formed from the 
			current vertex and the preceding vertex.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="input" type="input_local_offset_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The input element may occur any number of times. This input is a local input with the offset 
						and set attributes.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="p" type="p_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The linestrips element may have any number of p elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="count" type="uint_type" use="required">
			<xs:annotation>
				<xs:documentation>
					The count attribute indicates the number of linestrip primitives. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="material" type="xs:NCName">
			<xs:annotation>
				<xs:documentation>
					The material attribute declares a symbol for a material. This symbol is bound to a material 
					at the time of instantiation. If the material attribute is not specified then the lighting 
					and shading results are application defined. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="tristrips_type">
		<xs:annotation>
			<xs:documentation>
			The tristrips element provides the information needed to bind vertex attributes together and then 
			organize those vertices into connected triangles. Each triangle described by the mesh has three 
			vertices. The first triangle is formed from first, second, and third vertices. Each subsequent 
			triangle is formed from the current vertex, reusing the previous two vertices.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="input" type="input_local_offset_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The input element may occur any number of times. This input is a local input with the offset 
						and set attributes.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="p" type="p_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The tristrips element may have any number of p elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="count" type="uint_type" use="required">
			<xs:annotation>
				<xs:documentation>
					The count attribute indicates the number of triangle strip primitives. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="material" type="xs:NCName">
			<xs:annotation>
				<xs:documentation>
					The material attribute declares a symbol for a material. This symbol is bound to a material 
					at the time of instantiation. If the material attribute is not specified then the lighting 
					and shading results are application defined. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="lines_type">
		<xs:annotation>
			<xs:documentation>
			The lines element provides the information needed to bind vertex attributes together and then 
			organize those vertices into individual lines. Each line described by the mesh has two vertices. 
			The first line is formed from first and second vertices. The second line is formed from the 
			third and fourth vertices and so on.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="input" type="input_local_offset_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The input element may occur any number of times. This input is a local input with the offset 
						and set attributes.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="p" type="p_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The lines element may have zero or one p element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="count" type="uint_type" use="required">
			<xs:annotation>
				<xs:documentation>
					The count attribute indicates the number of line primitives. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="material" type="xs:NCName">
			<xs:annotation>
				<xs:documentation>
					The material attribute declares a symbol for a material. This symbol is bound to a material at 
					the time of instantiation. If the material attribute is not specified then the lighting and 
					shading results are application defined. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="triangles_type">
		<xs:annotation>
			<xs:documentation>
			The triangles element provides the information needed to bind vertex attributes together and 
			then organize those vertices into individual triangles.	Each triangle described by the mesh has 
			three vertices. The first triangle is formed from the first, second, and third vertices. The 
			second triangle is formed from the fourth, fifth, and sixth vertices, and so on.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="input" type="input_local_offset_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The input element may occur any number of times. This input is a local input with the 
						offset and set attributes.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="p" type="p_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The triangles element may have zero or one p element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="count" type="uint_type" use="required">
			<xs:annotation>
				<xs:documentation>
					The count attribute indicates the number of triangle primitives. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="material" type="xs:NCName">
			<xs:annotation>
				<xs:documentation>
					The material attribute declares a symbol for a material. This symbol is bound to a material at 
					the time of instantiation. Optional attribute. If the material attribute is not specified then 
					the lighting and shading results are application defined.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="trifans_type">
		<xs:annotation>
			<xs:documentation>
			The trifans element provides the information needed to bind vertex attributes together and then 
			organize those vertices into connected triangles. Each triangle described by the mesh has three 
			vertices. The first triangle is formed from first, second, and third vertices. Each subsequent 
			triangle is formed from the current vertex, reusing the first and the previous vertices.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="input" type="input_local_offset_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The input element may occur any number of times. This input is a local input with the 
						offset and set attributes.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="p" type="p_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The trifans element may have any number of p elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="count" type="uint_type" use="required">
			<xs:annotation>
				<xs:documentation>
					The count attribute indicates the number of triangle fan primitives. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="material" type="xs:NCName">
			<xs:annotation>
				<xs:documentation>
					The material attribute declares a symbol for a material. This symbol is bound to a material 
					at the time of instantiation. If the material attribute is not specified then the lighting 
					and shading results are application defined. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="vertices_type">
		<xs:annotation>
			<xs:documentation>
			The vertices element declares the attributes and identity of mesh-vertices. The vertices element
			describes mesh-vertices in a mesh geometry. The mesh-vertices represent the position (identity) 
			of the vertices comprising the mesh and other vertex attributes that are invariant to tessellation.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="input" type="input_local_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The input element must occur at least one time. These inputs are local inputs.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="required">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. This 
					value must be unique within the instance document. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="asset_type">
		<xs:annotation>
			<xs:documentation>
			The asset element defines asset management information regarding its parent element.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="contributor" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The contributor element defines authoring information for asset management
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="author" type="xs:string" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									The author element contains a string with the author's name.
									There may be only one author element.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="author_email" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Contains a string with author's email address. String that compliant with RFC 2822 section 3.4. This element has no attributes. There may be only one author email address.</xs:documentation>
							</xs:annotation>
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:pattern value="[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+(\.[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+)*@[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+(\.[A-Za-z0-9!#-'\*\+\-/=\?\^_`\{-~]+)*"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
						<xs:element name="author_website" type="xs:anyURI" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Contains a URI reference (xs:anyURI) to author's website.  This element has no attributes.   There may be only one author website.</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="authoring_tool" type="xs:string" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									The authoring_tool element contains a string with the authoring tool's name.
									There may be only one authoring_tool element.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="comments" type="xs:string" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									The comments element contains a string with comments from this contributor.
									There may be only one comments element.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="copyright" type="xs:string" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									The copyright element contains a string with copyright information.
									There may be only one copyright element.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="source_data" type="xs:anyURI" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									The source_data element contains a URI reference to the source data used for this asset.
									There may be only one source_data element.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="coverage" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="geographic_location" minOccurs="0">
							<xs:annotation>
								<xs:documentation> 
                                    Specifies the location of the asset using the WGS84 coordinate system. 
                                    </xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="longitude" type="xs:float"/>
									<xs:element name="latitude" type="xs:float"/>
									<xs:element name="altitude">
										<xs:annotation>
											<xs:documentation> 
                                                 Altitude is always given in meters.  If the mode is "absolute", then the value is interpreted as meters from mean sea level.  If the mode is "relativeToGround" then the value is interpreted as meters above the actual ground elevation at that particular location. 
                                                </xs:documentation>
										</xs:annotation>
										<xs:complexType>
											<xs:simpleContent>
												<xs:extension base="xs:float">
													<xs:attribute name="mode" type="altitude_mode_enum" default="relativeToGround"/>
												</xs:extension>
											</xs:simpleContent>
										</xs:complexType>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="created" type="xs:dateTime">
				<xs:annotation>
					<xs:documentation>
						The created element contains the date and time that the parent element was created and is 
						represented in an ISO 8601 format.  The created element may appear zero or one time.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="keywords" type="xs:token" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The keywords element contains a list of words used as search criteria for the parent element. 
						There may be only one keywords element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="modified" type="xs:dateTime">
				<xs:annotation>
					<xs:documentation>
						The modified element contains the date and time that the parent element was last modified and 
						represented in an ISO 8601 format. The modified element may appear zero or one time.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="revision" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The revision element contains the revision information for the parent element. The revision 
						element may appear zero or one time.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="subject" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The subject element contains a description of the topical subject of the parent element. The 
						subject element may appear zero or one time.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="title" type="xs:string" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The title element contains the title information for the parent element. The title element may 
						appear zero or one time.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="unit" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The unit element contains descriptive information about unit of measure. It has attributes for 
						the name of the unit and the measurement with respect to the meter. The unit element may appear 
						zero or one time.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:attribute name="meter" type="float_type" default="1.0">
						<xs:annotation>
							<xs:documentation>
								The meter attribute specifies the measurement with respect to the meter. The default 
								value for the meter attribute is "1.0".
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
					<xs:attribute name="name" type="xs:NMTOKEN" default="meter">
						<xs:annotation>
							<xs:documentation>
								The name attribute specifies the name of the unit. The default value for the name 
								attribute is "meter".
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="up_axis" type="up_axis_enum" default="Y_UP" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The up_axis element contains descriptive information about coordinate system of the geometric 
						data. All coordinates are right-handed by definition. This element specifies which axis is 
						considered up. The default is the Y-axis. The up_axis element may appear zero or one time.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="image_type">
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The image element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="renderable" minOccurs="0">
				<xs:annotation>
					<xs:documentation>This image is renderable  if this element is used</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:attribute name="share" type="xs:boolean" use="required">
						<xs:annotation>
							<xs:documentation>As a render target, true = shared across all users, false = unique per instance</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:choice minOccurs="0">
				<xs:element name="init_from">
					<xs:annotation>
						<xs:documentation>initialize the whole image structure and data from formats like DDS</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:complexContent>
							<xs:extension base="image_source_type">
								<xs:attribute name="mips_generate" type="xs:boolean" use="optional" default="true">
									<xs:annotation>
										<xs:documentation>If true, unless mips already exist in data, generate the mipmaps based on information loaded into mip0, </xs:documentation>
									</xs:annotation>
								</xs:attribute>
							</xs:extension>
						</xs:complexContent>
					</xs:complexType>
				</xs:element>
				<xs:element name="create_2d">
					<xs:annotation>
						<xs:documentation>Initialize a custom 2d image</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:choice>
								<xs:annotation>
									<xs:documentation>sizing</xs:documentation>
								</xs:annotation>
								<xs:element name="size_exact">
									<xs:annotation>
										<xs:documentation>The surface should be sized to these exact dimensions</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:attribute name="width" type="xs:unsignedInt" use="required"/>
										<xs:attribute name="height" type="xs:unsignedInt" use="required"/>
									</xs:complexType>
								</xs:element>
								<xs:element name="size_ratio">
									<xs:annotation>
										<xs:documentation>Image size should be relative to the size of the viewport.  Ex 1,1 is the same size as the viewport.  0.5,0.5 is 1/2 the size of the viewport</xs:documentation>
									</xs:annotation>
									<xs:complexType>
										<xs:attribute name="width" type="xs:float" use="required"/>
										<xs:attribute name="height" type="xs:float" use="required"/>
									</xs:complexType>
								</xs:element>
							</xs:choice>
							<xs:choice>
								<xs:annotation>
									<xs:documentation>mips and texel addressing</xs:documentation>
								</xs:annotation>
								<xs:element name="mips" type="image_mips_type"/>
								<xs:element name="unnormalized">
									<xs:annotation>
										<xs:documentation>Unnormalized addressing of texels.  (0-W, 0-H).  This cannot be used with mips since the addressing is not uniform per level.  This is equivilant to OpenGL textureRECT extension.</xs:documentation>
									</xs:annotation>
								</xs:element>
							</xs:choice>
							<xs:element name="array" minOccurs="0">
								<xs:complexType>
									<xs:attribute name="length" type="xs:positiveInteger" use="required"/>
								</xs:complexType>
							</xs:element>
							<xs:element name="format" minOccurs="0">
								<xs:annotation>
									<xs:documentation>If not present it is assumed to be R8G8B8A8 linear. </xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="hint">
											<xs:annotation>
												<xs:documentation>if this element or a higher precidence element is not present then use a common format R8G8B8A8 with linear color gradient, not  sRGB.</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:attribute name="channels" type="image_format_hint_channels_enum" use="required">
													<xs:annotation>
														<xs:documentation>The per-texel layout of the format.  The length of the string indicate how many channels there are and the letter respresents the name of the channel.  There are typically 0 to 4 channels.</xs:documentation>
													</xs:annotation>
												</xs:attribute>
												<xs:attribute name="range" type="image_format_hint_range_enum" use="required">
													<xs:annotation>
														<xs:documentation>Each channel represents a range of values. Some example ranges are signed or unsigned integers, or between between a clamped range such as 0.0f to 1.0f, or high dynamic range via floating point</xs:documentation>
													</xs:annotation>
												</xs:attribute>
												<xs:attribute name="precision" type="image_format_hint_precision_enum" default="DEFAULT">
													<xs:annotation>
														<xs:documentation>Each channel of the texel has a precision.  Typically these are all linked together.  An exact format lay lower the precision of an individual channel but applying a higher precision by linking the channels together may still convey the same information.</xs:documentation>
													</xs:annotation>
												</xs:attribute>
												<xs:attribute name="space" type="xs:token">
													<xs:annotation>
														<xs:documentation>linear(default), sRGB </xs:documentation>
													</xs:annotation>
												</xs:attribute>
											</xs:complexType>
										</xs:element>
										<xs:element name="exact" type="xs:token" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Contains a string representing the profile and platform specific texel format that the author would like this surface to use.  If this element is not specified then the application will fall back to the hint</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="init_from" minOccurs="0" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>init the image data from one or more partial pieces of data.  The load attribute indicates what portion of the image will be loaded based on the ''address" specified.  mip_generate may be used to complete the image.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:complexContent>
										<xs:extension base="image_source_type">
											<xs:attribute name="mip_index" type="xs:unsignedInt" use="required"/>
											<xs:attribute name="array_index" type="xs:unsignedInt" use="optional" default="0"/>
										</xs:extension>
									</xs:complexContent>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="create_3d">
					<xs:annotation>
						<xs:documentation>Initialize a custom 3d image</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="size">
								<xs:annotation>
									<xs:documentation>The surface should be sized to these exact dimensions</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:attribute name="width" type="xs:unsignedInt" use="required"/>
									<xs:attribute name="height" type="xs:unsignedInt" use="required"/>
									<xs:attribute name="depth" type="xs:unsignedInt" use="required"/>
								</xs:complexType>
							</xs:element>
							<xs:element name="mips" type="image_mips_type"/>
							<xs:element name="array" minOccurs="0">
								<xs:complexType>
									<xs:attribute name="length" type="xs:unsignedInt" use="required">
										<xs:annotation>
											<xs:documentation>Zero is not an array</xs:documentation>
										</xs:annotation>
									</xs:attribute>
								</xs:complexType>
							</xs:element>
							<xs:element name="format" minOccurs="0">
								<xs:annotation>
									<xs:documentation>If not present it is assumed to be R8G8B8A8 linear. </xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="hint">
											<xs:annotation>
												<xs:documentation>if this element or a higher precidence element is not present then use a common format R8G8B8A8 with linear color gradient, not  sRGB.</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:attribute name="channels" type="image_format_hint_channels_enum" use="required">
													<xs:annotation>
														<xs:documentation>The per-texel layout of the format.  The length of the string indicate how many channels there are and the letter respresents the name of the channel.  There are typically 0 to 4 channels.</xs:documentation>
													</xs:annotation>
												</xs:attribute>
												<xs:attribute name="range" type="image_format_hint_range_enum" use="required">
													<xs:annotation>
														<xs:documentation>Each channel represents a range of values. Some example ranges are signed or unsigned integers, or between between a clamped range such as 0.0f to 1.0f, or high dynamic range via floating point</xs:documentation>
													</xs:annotation>
												</xs:attribute>
												<xs:attribute name="precision" type="image_format_hint_precision_enum" default="DEFAULT">
													<xs:annotation>
														<xs:documentation>Each channel of the texel has a precision.  Typically these are all linked together.  An exact format lay lower the precision of an individual channel but applying a higher precision by linking the channels together may still convey the same information.</xs:documentation>
													</xs:annotation>
												</xs:attribute>
												<xs:attribute name="space" type="xs:token">
													<xs:annotation>
														<xs:documentation>linear(default), sRGB </xs:documentation>
													</xs:annotation>
												</xs:attribute>
											</xs:complexType>
										</xs:element>
										<xs:element name="exact" type="xs:token" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Contains a string representing the profile and platform specific texel format that the author would like this surface to use.  If this element is not specified then the application will fall back to the hint</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="init_from" minOccurs="0" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>init the image data from one or more partial pieces of data.  The load attribute indicates what portion of the image will be loaded based on the ''address" specified.  mip_generate may be used to complete the image.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:complexContent>
										<xs:extension base="image_source_type">
											<xs:attribute name="depth" type="xs:unsignedInt" use="required"/>
											<xs:attribute name="mip_index" type="xs:unsignedInt" use="required"/>
											<xs:attribute name="array_index" type="xs:unsignedInt" use="optional" default="0"/>
										</xs:extension>
									</xs:complexContent>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="create_cube">
					<xs:annotation>
						<xs:documentation>Initialize a custom cube image</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="size">
								<xs:annotation>
									<xs:documentation>The surface should be sized to these exact dimensions</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:attribute name="width" type="xs:unsignedInt" use="required"/>
								</xs:complexType>
							</xs:element>
							<xs:element name="mips" type="image_mips_type"/>
							<xs:element name="array" minOccurs="0">
								<xs:complexType>
									<xs:attribute name="length" type="xs:unsignedInt" use="required">
										<xs:annotation>
											<xs:documentation>Zero is not an array</xs:documentation>
										</xs:annotation>
									</xs:attribute>
								</xs:complexType>
							</xs:element>
							<xs:element name="format" minOccurs="0">
								<xs:annotation>
									<xs:documentation>If not present it is assumed to be R8G8B8A8 linear. </xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element name="hint">
											<xs:annotation>
												<xs:documentation>if this element or a higher precidence element is not present then use a common format R8G8B8A8 with linear color gradient, not  sRGB.</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:attribute name="channels" type="image_format_hint_channels_enum" use="required">
													<xs:annotation>
														<xs:documentation>The per-texel layout of the format.  The length of the string indicate how many channels there are and the letter respresents the name of the channel.  There are typically 0 to 4 channels.</xs:documentation>
													</xs:annotation>
												</xs:attribute>
												<xs:attribute name="range" type="image_format_hint_range_enum" use="required">
													<xs:annotation>
														<xs:documentation>Each channel represents a range of values. Some example ranges are signed or unsigned integers, or between between a clamped range such as 0.0f to 1.0f, or high dynamic range via floating point</xs:documentation>
													</xs:annotation>
												</xs:attribute>
												<xs:attribute name="precision" type="image_format_hint_precision_enum" default="DEFAULT">
													<xs:annotation>
														<xs:documentation>Each channel of the texel has a precision.  Typically these are all linked together.  An exact format lay lower the precision of an individual channel but applying a higher precision by linking the channels together may still convey the same information.</xs:documentation>
													</xs:annotation>
												</xs:attribute>
												<xs:attribute name="space" type="xs:token">
													<xs:annotation>
														<xs:documentation>linear(default), sRGB </xs:documentation>
													</xs:annotation>
												</xs:attribute>
											</xs:complexType>
										</xs:element>
										<xs:element name="exact" type="xs:token" minOccurs="0">
											<xs:annotation>
												<xs:documentation>Contains a string representing the profile and platform specific texel format that the author would like this surface to use.  If this element is not specified then the application will fall back to the hint</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="init_from" minOccurs="0" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>init the image data from one or more partial pieces of data.  The load attribute indicates what portion of the image will be loaded based on the ''address" specified.  mip_generate may be used to complete the image.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:complexContent>
										<xs:extension base="image_source_type">
											<xs:attribute name="face" type="image_face_enum" use="required"/>
											<xs:attribute name="mip_index" type="xs:unsignedInt" use="required"/>
											<xs:attribute name="array_index" type="xs:unsignedInt" use="optional" default="0"/>
										</xs:extension>
									</xs:complexContent>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:choice>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. This value 
					must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="sid" type="sid_type">
			<xs:annotation>
				<xs:documentation>sub identifier</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="camera_type">
		<xs:annotation>
			<xs:documentation>
			The camera element declares a view into the scene hierarchy or scene graph. The camera contains 
			elements that describe the camera's optics and imager.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The camera element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="optics">
				<xs:annotation>
					<xs:documentation>
						Optics represents the apparatus on a camera that projects the image onto the image sensor.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="technique_common">
							<xs:annotation>
								<xs:documentation>
									The technique_common element specifies the optics information for the common profile 
									which all COLLADA implementations need to support.
									</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:choice>
									<xs:element name="orthographic">
										<xs:annotation>
											<xs:documentation>
												The orthographic element describes the field of view of an orthographic camera.
												</xs:documentation>
										</xs:annotation>
										<xs:complexType>
											<xs:sequence>
												<xs:choice>
													<xs:sequence>
														<xs:element name="xmag" type="targetable_float_type">
															<xs:annotation>
																<xs:documentation>
																	The xmag element contains a floating point number describing the horizontal 
																	magnification of the view.
																	</xs:documentation>
															</xs:annotation>
														</xs:element>
														<xs:choice minOccurs="0">
															<xs:element name="ymag" type="targetable_float_type">
																<xs:annotation>
																	<xs:documentation>
																		The ymag element contains a floating point number describing the vertical 
																		magnification of the view.  It can also have a sid.
																		</xs:documentation>
																</xs:annotation>
															</xs:element>
															<xs:element name="aspect_ratio" type="targetable_float_type">
																<xs:annotation>
																	<xs:documentation>
																		The aspect_ratio element contains a floating point number describing the aspect ratio of 
																		the field of view. If the aspect_ratio element is not present the aspect ratio is to be 
																		calculated from the xmag or ymag elements and the current viewport.
																		</xs:documentation>
																</xs:annotation>
															</xs:element>
														</xs:choice>
													</xs:sequence>
													<xs:sequence>
														<xs:element name="ymag" type="targetable_float_type"/>
														<xs:element name="aspect_ratio" type="targetable_float_type" minOccurs="0"/>
													</xs:sequence>
												</xs:choice>
												<xs:element name="znear" type="targetable_float_type">
													<xs:annotation>
														<xs:documentation>
															The znear element contains a floating point number that describes the distance to the near 
															clipping plane. The znear element must occur exactly once.
															</xs:documentation>
													</xs:annotation>
												</xs:element>
												<xs:element name="zfar" type="targetable_float_type">
													<xs:annotation>
														<xs:documentation>
															The zfar element contains a floating point number that describes the distance to the far 
															clipping plane. The zfar element must occur exactly once.
															</xs:documentation>
													</xs:annotation>
												</xs:element>
											</xs:sequence>
										</xs:complexType>
									</xs:element>
									<xs:element name="perspective">
										<xs:annotation>
											<xs:documentation>
												The perspective element describes the optics of a perspective camera.
												</xs:documentation>
										</xs:annotation>
										<xs:complexType>
											<xs:sequence>
												<xs:choice>
													<xs:sequence>
														<xs:element name="xfov" type="targetable_float_type">
															<xs:annotation>
																<xs:documentation>
																	The xfov element contains a floating point number describing the horizontal field of view in degrees.
																	</xs:documentation>
															</xs:annotation>
														</xs:element>
														<xs:choice minOccurs="0">
															<xs:element name="yfov" type="targetable_float_type">
																<xs:annotation>
																	<xs:documentation>
																		The yfov element contains a floating point number describing the verticle field of view in degrees.
																		</xs:documentation>
																</xs:annotation>
															</xs:element>
															<xs:element name="aspect_ratio" type="targetable_float_type">
																<xs:annotation>
																	<xs:documentation>
																		The aspect_ratio element contains a floating point number describing the aspect ratio of the field 
																		of view. If the aspect_ratio element is not present the aspect ratio is to be calculated from the 
																		xfov or yfov elements and the current viewport.
																		</xs:documentation>
																</xs:annotation>
															</xs:element>
														</xs:choice>
													</xs:sequence>
													<xs:sequence>
														<xs:element name="yfov" type="targetable_float_type"/>
														<xs:element name="aspect_ratio" type="targetable_float_type" minOccurs="0"/>
													</xs:sequence>
												</xs:choice>
												<xs:element name="znear" type="targetable_float_type">
													<xs:annotation>
														<xs:documentation>
															The znear element contains a floating point number that describes the distance to the near 
															clipping plane. The znear element must occur exactly once.
															</xs:documentation>
													</xs:annotation>
												</xs:element>
												<xs:element name="zfar" type="targetable_float_type">
													<xs:annotation>
														<xs:documentation>
															The zfar element contains a floating point number that describes the distance to the far 
															clipping plane. The zfar element must occur exactly once.
															</xs:documentation>
													</xs:annotation>
												</xs:element>
											</xs:sequence>
										</xs:complexType>
									</xs:element>
								</xs:choice>
							</xs:complexType>
						</xs:element>
						<xs:element name="technique" type="technique_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									This element may contain any number of non-common profile techniques.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									The extra element may appear any number of times.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="imager" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						Imagers represent the image sensor of a camera (for example film or CCD).
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="technique" type="technique_type" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									This element may contain any number of non-common profile techniques.
									There is no common technique for imager.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									The extra element may appear any number of times.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. This value 
					must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="light_type">
		<xs:annotation>
			<xs:documentation>
			The light element declares a light source that illuminates the scene.
			Light sources have many different properties and radiate light in many different patterns and 
			frequencies.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The light element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="technique_common">
				<xs:annotation>
					<xs:documentation>
						The technique_common element specifies the light information for the common profile which all 
						COLLADA implementations need to support.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:choice>
						<xs:element name="ambient">
							<xs:annotation>
								<xs:documentation>
									The ambient element declares the parameters required to describe an ambient light source.  
									An ambient light is one that lights everything evenly, regardless of location or orientation.
									</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="color" type="targetable_float3_type">
										<xs:annotation>
											<xs:documentation>
												The color element contains three floating point numbers specifying the color of the light.
												The color element must occur exactly once.  
												</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
						<xs:element name="directional">
							<xs:annotation>
								<xs:documentation>
									The directional element declares the parameters required to describe a directional light source.  
									A directional light is one that lights everything from the same direction, regardless of location.  
									The light's default direction vector in local coordinates is [0,0,-1], pointing down the -Z axis. 
									The actual direction of the light is defined by the transform of the node where the light is 
									instantiated.
									</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="color" type="targetable_float3_type">
										<xs:annotation>
											<xs:documentation>
												The color element contains three floating point numbers specifying the color of the light.
												The color element must occur exactly once.  
												</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
						<xs:element name="point">
							<xs:annotation>
								<xs:documentation>
									The point element declares the parameters required to describe a point light source.  A point light 
									source radiates light in all directions from a known location in space. The intensity of a point 
									light source is attenuated as the distance to the light source increases. The position of the light 
									is defined by the transform of the node in which it is instantiated.
									</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="color" type="targetable_float3_type">
										<xs:annotation>
											<xs:documentation>
												The color element contains three floating point numbers specifying the color of the light.
												The color element must occur exactly once.  
												</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="constant_attenuation" type="targetable_float_type" default="1.0" minOccurs="0">
										<xs:annotation>
											<xs:documentation>
												The constant_attenuation is used to calculate the total attenuation of this light given a distance. 
												The equation used is A = constant_attenuation + Dist*linear_attenuation + Dist^2*quadratic_attenuation. 
												</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="linear_attenuation" type="targetable_float_type" default="0.0" minOccurs="0">
										<xs:annotation>
											<xs:documentation>
												The linear_attenuation is used to calculate the total attenuation of this light given a distance. 
												The equation used is A = constant_attenuation + Dist*linear_attenuation + Dist^2*quadratic_attenuation. 
												</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="quadratic_attenuation" type="targetable_float_type" default="0.0" minOccurs="0">
										<xs:annotation>
											<xs:documentation>
												The quadratic_attenuation is used to calculate the total attenuation of this light given a distance. 
												The equation used is A = constant_attenuation + Dist*linear_attenuation + Dist^2*quadratic_attenuation. 
												</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
						<xs:element name="spot">
							<xs:annotation>
								<xs:documentation>
									The spot element declares the parameters required to describe a spot light source.  A spot light 
									source radiates light in one direction from a known location in space. The light radiates from 
									the spot light source in a cone shape. The intensity of the light is attenuated as the radiation 
									angle increases away from the direction of the light source. The intensity of a spot light source 
									is also attenuated as the distance to the light source increases. The position of the light is 
									defined by the transform of the node in which it is instantiated. The light's default direction 
									vector in local coordinates is [0,0,-1], pointing down the -Z axis. The actual direction of the 
									light is defined by the transform of the node where the light is instantiated.
									</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="color" type="targetable_float3_type">
										<xs:annotation>
											<xs:documentation>
												The color element contains three floating point numbers specifying the color of the light.
												The color element must occur exactly once.  
												</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="constant_attenuation" type="targetable_float_type" default="1.0" minOccurs="0">
										<xs:annotation>
											<xs:documentation>
												The constant_attenuation is used to calculate the total attenuation of this light given a distance. 
												The equation used is A = constant_attenuation + Dist*linear_attenuation + Dist^2*quadratic_attenuation. 
												</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="linear_attenuation" type="targetable_float_type" default="0.0" minOccurs="0">
										<xs:annotation>
											<xs:documentation>
												The linear_attenuation is used to calculate the total attenuation of this light given a distance. 
												The equation used is A = constant_attenuation + Dist*linear_attenuation + Dist^2*quadratic_attenuation. 
												</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="quadratic_attenuation" type="targetable_float_type" default="0.0" minOccurs="0">
										<xs:annotation>
											<xs:documentation>
												The quadratic_attenuation is used to calculate the total attenuation of this light given a distance. 
												The equation used is A = constant_attenuation + Dist*linear_attenuation + Dist^2*quadratic_attenuation. 
												</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="falloff_angle" type="targetable_float_type" default="180.0" minOccurs="0">
										<xs:annotation>
											<xs:documentation>
												The falloff_angle is used to specify the amount of attenuation based on the direction of the light.
												</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="falloff_exponent" type="targetable_float_type" default="0.0" minOccurs="0">
										<xs:annotation>
											<xs:documentation>
												The falloff_exponent is used to specify the amount of attenuation based on the direction of the light.
												</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:choice>
				</xs:complexType>
			</xs:element>
			<xs:element name="technique" type="technique_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						This element may contain any number of non-common profile techniques.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="instance_with_extra_type">
		<xs:annotation>
			<xs:documentation>
			The instance_with_extra_type element is used for all generic instance elements. A generic instance element 
			is one which does not have any specific child elements declared.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may occur any number of times.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="url" type="xs:anyURI" use="required">
			<xs:annotation>
				<xs:documentation>
				The url attribute refers to resource to instantiate. This may refer to a local resource using a 
				relative URL fragment identifier that begins with the "#" character. The url attribute may refer 
				to an external resource using an absolute or relative URL.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="sid" type="sid_type">
			<xs:annotation>
				<xs:documentation>
				The sid attribute is a text string value containing the sub-identifier of this element. This 
				value must be unique within the scope of the parent element. Optional attribute.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
				The name attribute is the text string name of this element. Optional attribute.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="instance_image_type">
		<xs:complexContent>
			<xs:restriction base="instance_with_extra_type"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="instance_camera_type">
		<xs:annotation>
			<xs:documentation>
			The instance_camera element declares the instantiation of a COLLADA camera resource.
			</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="instance_with_extra_type"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="instance_force_field_type">
		<xs:annotation>
			<xs:documentation>
			The instance_force_field element declares the instantiation of a COLLADA force_field resource.
			</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="instance_with_extra_type"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="instance_light_type">
		<xs:annotation>
			<xs:documentation>
			The instance_light element declares the instantiation of a COLLADA light resource.
			</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="instance_with_extra_type"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="instance_material_type">
		<xs:annotation>
			<xs:documentation>
			The instance_material element declares the instantiation of a COLLADA material resource.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="bind" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The bind element binds values to effect parameters upon instantiation.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:attribute name="semantic" type="xs:NCName" use="required">
						<xs:annotation>
							<xs:documentation>
								The semantic attribute specifies which effect parameter to bind.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
					<xs:attribute name="target" type="xs:token" use="required">
						<xs:annotation>
							<xs:documentation>
								The target attribute specifies the location of the value to bind to the specified semantic. 
								This text string is a path-name following a simple syntax described in the "Addressing Syntax" 
								section.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="bind_vertex_input" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The bind_vertex_input element binds vertex inputs to effect parameters upon instantiation.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:attribute name="semantic" type="xs:NCName" use="required">
						<xs:annotation>
							<xs:documentation>
								The semantic attribute specifies which effect parameter to bind.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
					<xs:attribute name="input_semantic" type="xs:NCName" use="required">
						<xs:annotation>
							<xs:documentation>
								The input_semantic attribute specifies which input semantic to bind.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
					<xs:attribute name="input_set" type="uint_type">
						<xs:annotation>
							<xs:documentation>
								The input_set attribute specifies which input set to bind. 
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="symbol" type="xs:NCName" use="required">
			<xs:annotation>
				<xs:documentation>
					The symbol attribute specifies which symbol defined from within the geometry this material binds to.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="target" type="xs:anyURI" use="required">
			<xs:annotation>
				<xs:documentation>
					The target attribute specifies the URL of the location of the object to instantiate.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="sid" type="sid_type">
			<xs:annotation>
				<xs:documentation>
					The sid attribute is a text string value containing the sub-identifier of this element. This 
					value must be unique within the scope of the parent element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="bind_material_type">
		<xs:annotation>
			<xs:documentation>
			Bind a specific material to a piece of geometry, binding varying and uniform parameters at the 
			same time.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="param" type="param_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The bind_material element may contain any number of param elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="technique_common">
				<xs:annotation>
					<xs:documentation>
						The technique_common element specifies the bind_material information for the common 
						profile which all COLLADA implementations need to support.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="instance_material" type="instance_material_type" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									The instance_material element specifies the information needed to bind a geometry
									to a material. This element must appear at least once.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="technique" type="technique_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						This element may contain any number of non-common profile techniques.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="instance_controller_type">
		<xs:annotation>
			<xs:documentation>
			The instance_controller element declares the instantiation of a COLLADA controller resource.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="skeleton" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The skeleton element is used to indicate where a skin controller is to start to search for 
						the joint nodes it needs.  This element is meaningless for morph controllers.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="bind_material" type="bind_material_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						Bind a specific material to a piece of geometry, binding varying and uniform parameters at the 
						same time.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="url" type="xs:anyURI" use="required">
			<xs:annotation>
				<xs:documentation>
					The url attribute refers to resource. This may refer to a local resource using a relative 
					URL fragment identifier that begins with the "#" character. The url attribute may refer to an 
					external resource using an absolute or relative URL.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="sid" type="sid_type">
			<xs:annotation>
				<xs:documentation>
					The sid attribute is a text string value containing the sub-identifier of this element. This 
					value must be unique within the scope of the parent element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="instance_geometry_type">
		<xs:annotation>
			<xs:documentation>
			The instance_geometry element declares the instantiation of a COLLADA geometry resource.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="bind_material" type="bind_material_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						Bind a specific material to a piece of geometry, binding varying and uniform parameters at the 
						same time.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="url" type="xs:anyURI" use="required">
			<xs:annotation>
				<xs:documentation>
					The url attribute refers to resource.  This may refer to a local resource using a relative URL 
					fragment identifier that begins with the "#" character. The url attribute may refer to an external 
					resource using an absolute or relative URL.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="sid" type="sid_type">
			<xs:annotation>
				<xs:documentation>
					The sid attribute is a text string value containing the sub-identifier of this element. This 
					value must be unique within the scope of the parent element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="instance_node_type">
		<xs:annotation>
			<xs:documentation>
			The instance_node element declares the instantiation of a COLLADA node resource.
			</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="instance_with_extra_type">
				<xs:attribute name="proxy" type="xs:anyURI"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="instance_physics_material_type">
		<xs:annotation>
			<xs:documentation>
			The instance_physics_material element declares the instantiation of a COLLADA physics_material 
			resource.
			</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="instance_with_extra_type"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="instance_rigid_constraint_type">
		<xs:annotation>
			<xs:documentation>
			This element allows instancing a rigid_constraint within an instance_physics_model. 
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="constraint" type="xs:NCName" use="required">
			<xs:annotation>
				<xs:documentation>
					The constraint attribute indicates which rigid_constraing to instantiate. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="sid" type="sid_type">
			<xs:annotation>
				<xs:documentation>
					The sid attribute is a text string value containing the sub-identifier of this element. This 
					value must be unique within the scope of the parent element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="library_cameras_type">
		<xs:annotation>
			<xs:documentation>
			The library_cameras element declares a module of camera elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The library_cameras element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="camera" type="camera_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There must be at least one camera element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="library_images_type">
		<xs:annotation>
			<xs:documentation>
			The library_images element declares a module of image elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The library_images element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="image" type="image_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There must be at least one image element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="library_lights_type">
		<xs:annotation>
			<xs:documentation>
			The library_lights element declares a module of light elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The library_lights element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="light" type="light_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There must be at least one light element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:simpleType name="fx_color_type">
		<xs:restriction base="float4_type"/>
	</xs:simpleType>
	<xs:simpleType name="fx_opaque_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="A_ONE">
				<xs:annotation>
					<xs:documentation>
						When a transparent opaque attribute is set to A_ONE, it means the transparency information will be taken from the alpha channel of the color, texture, or parameter supplying the value. The value of 1.0 is opaque in this mode.
					</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="A_ZERO">
				<xs:annotation>
					<xs:documentation>
						When a transparent opaque attribute is set to A_ZERO, it means the transparency information will be taken from the alpha channel of the color, texture, or parameter supplying the value. The value of 0.0 is opaque in this mode.
					</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="RGB_ONE">
				<xs:annotation>
					<xs:documentation>
						When a transparent opaque attribute is set to RGB_ONE, it means the transparency information will be taken from the red, green, and blue channels of the color, texture, or parameter supplying the value. Each channel is modulated independently. The value of 1.0 is opaque in this mode.
					</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="RGB_ZERO">
				<xs:annotation>
					<xs:documentation>
						When a transparent opaque attribute is set to RGB_ZERO, it means the transparency information will be taken from the red, green, and blue channels of the color, texture, or parameter supplying the value. Each channel is modulated independently. The value of 0.0 is opaque in this mode.
					</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="fx_sampler_wrap_enum">
		<xs:restriction base="xs:NMTOKEN">
			<xs:enumeration value="WRAP">
				<xs:annotation>
					<xs:documentation>Tile the texture at every integer junction. For example, for u values between 0 and 3, the texture is repeated three times; no mirroring is performed</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="CLAMP">
				<xs:annotation>
					<xs:documentation>Same as CLAMP_TO_EDGE.  Texture coordinates reaching or exceeding the range [0.0, 1.0] are set just within 0.0 or 1.0 so that the boarder is not sampled</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="BORDER">
				<xs:annotation>
					<xs:documentation>Much like clamp except texture coordinates outside the range [0.0, 1.0] are set to the border color</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="MIRROR">
				<xs:annotation>
					<xs:documentation>texture is flipped at every integer junction. For u values between 0 and 1, for example, the texture is addressed normally; between 1 and 2, the texture is flipped (mirrored); between 2 and 3, the texture is normal again; and so on. 
</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="MIRROR_ONCE">
				<xs:annotation>
					<xs:documentation>Takes the absolute value of the texture coordinate (thus, mirroring around 0), and then clamps to the maximum value</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="fx_sampler_min_filter_enum">
		<xs:restriction base="xs:NMTOKEN">
			<xs:enumeration value="NEAREST"/>
			<xs:enumeration value="LINEAR"/>
			<xs:enumeration value="ANISOTROPIC"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="fx_sampler_mag_filter_enum">
		<xs:restriction base="xs:NMTOKEN">
			<xs:enumeration value="NEAREST"/>
			<xs:enumeration value="LINEAR"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="fx_sampler_mip_filter_enum">
		<xs:restriction base="xs:NMTOKEN">
			<xs:enumeration value="NONE"/>
			<xs:enumeration value="NEAREST"/>
			<xs:enumeration value="LINEAR"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:group name="fx_sampler_states_group">
		<xs:sequence>
			<xs:element name="wrap_s" type="fx_sampler_wrap_enum" default="WRAP" minOccurs="0"/>
			<xs:element name="wrap_t" type="fx_sampler_wrap_enum" default="WRAP" minOccurs="0"/>
			<xs:element name="wrap_p" type="fx_sampler_wrap_enum" default="WRAP" minOccurs="0"/>
			<xs:element name="minfilter" type="fx_sampler_min_filter_enum" default="LINEAR" minOccurs="0">
				<xs:annotation>
					<xs:documentation>minification</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="magfilter" type="fx_sampler_mag_filter_enum" default="LINEAR" minOccurs="0">
				<xs:annotation>
					<xs:documentation>magnification</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="mipfilter" type="fx_sampler_mip_filter_enum" default="LINEAR" minOccurs="0">
				<xs:annotation>
					<xs:documentation>filtering across mips.
NONE = no minification
NEAREST = bilinear
LINEAR = trilinear
ANISOTROPIC =  Compensates for distortion caused by the difference in angle between the polygon and the plane of the screen.  Relies on max_anisotropy</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="border_color" type="fx_color_type" minOccurs="0"/>
			<xs:element name="mip_max_level" type="xs:unsignedByte" default="0" minOccurs="0">
				<xs:annotation>
					<xs:documentation>level-of-detail index of largest map to use. Values range from 0 to (n - 1) where 0 is the largest. The default value is zero</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="mip_min_level" type="xs:unsignedByte" default="0" minOccurs="0">
				<xs:annotation>
					<xs:documentation>level-of-detail index of smallest map to use. Values range from 0 to (n - 1) where 0 is the smallest. The default value is zero</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="mip_bias" type="xs:float" default="0.0" minOccurs="0">
				<xs:annotation>
					<xs:documentation>Mipmap level-of-detail bias. The default value is zero</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="max_anisotropy" type="xs:unsignedInt" default="1" minOccurs="0">
				<xs:annotation>
					<xs:documentation>number of samples that may be used durring anisotropic filtering</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:group>
	<xs:group name="fx_setparam_group">
		<xs:annotation>
			<xs:documentation>
			A group that specifies the allowable types for effect scoped parameters.
			</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element name="bool" type="xs:boolean"/>
			<xs:element name="bool2" type="bool2_type"/>
			<xs:element name="bool3" type="bool3_type"/>
			<xs:element name="bool4" type="bool4_type"/>
			<xs:element name="int" type="int_type"/>
			<xs:element name="int2" type="int2_type"/>
			<xs:element name="int3" type="int3_type"/>
			<xs:element name="int4" type="int4_type"/>
			<xs:element name="float" type="float_type"/>
			<xs:element name="float2" type="float2_type"/>
			<xs:element name="float3" type="float3_type"/>
			<xs:element name="float4" type="float4_type"/>
			<xs:element name="float2x1" type="float2_type"/>
			<xs:element name="float2x2" type="float2x2_type"/>
			<xs:element name="float2x3" type="float2x3_type"/>
			<xs:element name="float2x4" type="float2x4_type"/>
			<xs:element name="float3x1" type="float3_type"/>
			<xs:element name="float3x2" type="float3x2_type"/>
			<xs:element name="float3x3" type="float3x3_type"/>
			<xs:element name="float3x4" type="float3x4_type"/>
			<xs:element name="float4x1" type="float4_type"/>
			<xs:element name="float4x2" type="float4x2_type"/>
			<xs:element name="float4x3" type="float4x3_type"/>
			<xs:element name="float4x4" type="float4x4_type"/>
			<xs:element name="enum" type="xs:string"/>
			<xs:element name="sampler_image" type="instance_image_type"/>
			<xs:element name="sampler_states">
				<xs:complexType>
					<xs:group ref="fx_sampler_states_group"/>
				</xs:complexType>
			</xs:element>
		</xs:choice>
	</xs:group>
	<xs:complexType name="instance_effect_type">
		<xs:annotation>
			<xs:documentation>
			The instance_effect element declares the instantiation of a COLLADA effect resource.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="technique_hint" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						Add a hint for a platform of which technique to use in this effect.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:attribute name="platform" type="xs:NCName" use="optional">
						<xs:annotation>
							<xs:documentation>
								A platform defines a string that specifies which platform this is hint is aimed for.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
					<xs:attribute name="profile" type="xs:NCName" use="optional">
						<xs:annotation>
							<xs:documentation>
								A profile defines a string that specifies which API profile this is hint is aimed for.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
					<xs:attribute name="ref" type="xs:NCName" use="required">
						<xs:annotation>
							<xs:documentation>
								A reference to the technique to use for the specified platform.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="setparam" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						Assigns a new value to a previously defined parameter
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:group ref="fx_setparam_group"/>
					</xs:sequence>
					<xs:attribute name="ref" type="xs:token" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="url" type="xs:anyURI" use="required">
			<xs:annotation>
				<xs:documentation>
					The url attribute refers to resource.  This may refer to a local resource using a relative URL 
					fragment identifier that begins with the "#" character. The url attribute may refer to an external 
					resource using an absolute or relative URL.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="sid" type="sid_type">
			<xs:annotation>
				<xs:documentation>
					The sid attribute is a text string value containing the sub-identifier of this element. This 
					value must be unique within the scope of the parent element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="material_type">
		<xs:annotation>
			<xs:documentation>
			Materials describe the visual appearance of a geometric object.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The material element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="instance_effect" type="instance_effect_type">
				<xs:annotation>
					<xs:documentation>
						The material must instance an effect.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. This value 
					must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="library_materials_type">
		<xs:annotation>
			<xs:documentation>
			The library_materials element declares a module of material elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The library_materials element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="material" type="material_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There must be at least one material element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="fx_sampler_type">
		<xs:annotation>
			<xs:documentation>Sampling state that can be sharable between samplers because there is often heavy re-use</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="instance_image" type="instance_image_type" minOccurs="0"/>
			<xs:group ref="fx_sampler_states_group"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="fx_sampler1D_type">
		<xs:annotation>
			<xs:documentation>
			A one-dimensional texture sampler.
			</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="fx_sampler_type"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="fx_sampler2D_type">
		<xs:annotation>
			<xs:documentation>
			A two-dimensional texture sampler.
			</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="fx_sampler_type"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="fx_sampler3D_type">
		<xs:annotation>
			<xs:documentation>
			A three-dimensional texture sampler.
			</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="fx_sampler_type"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="fx_samplerCUBE_type">
		<xs:annotation>
			<xs:documentation>
			A texture sampler for cube maps.
			</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="fx_sampler_type"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="fx_samplerRECT_type">
		<xs:annotation>
			<xs:documentation>
			A two-dimensional texture sampler.
			</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="fx_sampler_type"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="fx_samplerDEPTH_type">
		<xs:annotation>
			<xs:documentation>
			A texture sampler for depth maps.
			</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:restriction base="fx_sampler_type"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:group name="fx_newparam_group">
		<xs:annotation>
			<xs:documentation>
			A group that specifies the allowable types for effect scoped parameters.
			</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element name="bool" type="xs:boolean"/>
			<xs:element name="bool2" type="bool2_type"/>
			<xs:element name="bool3" type="bool3_type"/>
			<xs:element name="bool4" type="bool4_type"/>
			<xs:element name="int" type="int_type"/>
			<xs:element name="int2" type="int2_type"/>
			<xs:element name="int3" type="int3_type"/>
			<xs:element name="int4" type="int4_type"/>
			<xs:element name="float" type="float_type"/>
			<xs:element name="float2" type="float2_type"/>
			<xs:element name="float3" type="float3_type"/>
			<xs:element name="float4" type="float4_type"/>
			<xs:element name="float2x1" type="float2_type"/>
			<xs:element name="float2x2" type="float2x2_type"/>
			<xs:element name="float2x3" type="float2x3_type"/>
			<xs:element name="float2x4" type="float2x4_type"/>
			<xs:element name="float3x1" type="float3_type"/>
			<xs:element name="float3x2" type="float3x2_type"/>
			<xs:element name="float3x3" type="float3x3_type"/>
			<xs:element name="float3x4" type="float3x4_type"/>
			<xs:element name="float4x1" type="float4_type"/>
			<xs:element name="float4x2" type="float4x2_type"/>
			<xs:element name="float4x3" type="float4x3_type"/>
			<xs:element name="float4x4" type="float4x4_type"/>
			<xs:element name="sampler1D" type="fx_sampler1D_type"/>
			<xs:element name="sampler2D" type="fx_sampler2D_type"/>
			<xs:element name="sampler3D" type="fx_sampler3D_type"/>
			<xs:element name="samplerCUBE" type="fx_samplerCUBE_type"/>
			<xs:element name="samplerRECT" type="fx_samplerRECT_type"/>
			<xs:element name="samplerDEPTH" type="fx_samplerDEPTH_type"/>
			<xs:element name="enum" type="xs:string"/>
		</xs:choice>
	</xs:group>
	<xs:group name="fx_annotate_group">
		<xs:annotation>
			<xs:documentation>
			A group that specifies the allowable types for an annotation.
			</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element name="bool" type="xs:boolean"/>
			<xs:element name="bool2" type="bool2_type"/>
			<xs:element name="bool3" type="bool3_type"/>
			<xs:element name="bool4" type="bool4_type"/>
			<xs:element name="int" type="int_type"/>
			<xs:element name="int2" type="int2_type"/>
			<xs:element name="int3" type="int3_type"/>
			<xs:element name="int4" type="int4_type"/>
			<xs:element name="float" type="float_type"/>
			<xs:element name="float2" type="float2_type"/>
			<xs:element name="float3" type="float3_type"/>
			<xs:element name="float4" type="float4_type"/>
			<xs:element name="float2x2" type="float2x2_type"/>
			<xs:element name="float3x3" type="float3x3_type"/>
			<xs:element name="float4x4" type="float4x4_type"/>
			<xs:element name="string" type="xs:string"/>
		</xs:choice>
	</xs:group>
	<xs:simpleType name="fx_modifier_enum">
		<xs:restriction base="xs:NMTOKEN">
			<xs:enumeration value="CONST"/>
			<xs:enumeration value="UNIFORM"/>
			<xs:enumeration value="VARYING"/>
			<xs:enumeration value="STATIC"/>
			<xs:enumeration value="VOLATILE"/>
			<xs:enumeration value="EXTERN"/>
			<xs:enumeration value="SHARED"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="fx_rendertarget_type">
		<xs:choice>
			<xs:element name="param">
				<xs:complexType>
					<xs:attribute name="ref" type="xs:token" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="instance_image" type="instance_image_type"/>
		</xs:choice>
		<xs:attribute name="index" type="xs:nonNegativeInteger" use="optional" default="0">
			<xs:annotation>
				<xs:documentation>array index</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="mip" type="xs:nonNegativeInteger" use="optional" default="0">
			<xs:annotation>
				<xs:documentation>mip level</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="face" type="image_face_enum" use="optional" default="POSITIVE_X">
			<xs:annotation>
				<xs:documentation>cube face</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="slice" type="xs:nonNegativeInteger" use="optional" default="0">
			<xs:annotation>
				<xs:documentation>volume depth</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="fx_colortarget_type">
		<xs:complexContent>
			<xs:extension base="fx_rendertarget_type"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="fx_depthtarget_type">
		<xs:complexContent>
			<xs:extension base="fx_rendertarget_type"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="fx_stenciltarget_type">
		<xs:complexContent>
			<xs:extension base="fx_rendertarget_type"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="fx_clearcolor_type">
		<xs:simpleContent>
			<xs:extension base="fx_color_type">
				<xs:attribute name="index" type="xs:nonNegativeInteger" use="optional" default="0"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="fx_cleardepth_type">
		<xs:simpleContent>
			<xs:extension base="float_type">
				<xs:attribute name="index" type="xs:nonNegativeInteger" use="optional" default="0"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="fx_clearstencil_type">
		<xs:simpleContent>
			<xs:extension base="xs:byte">
				<xs:attribute name="index" type="xs:nonNegativeInteger" use="optional" default="0"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="fx_draw_type">
		<xs:annotation>
			<xs:documentation>
? GEOMETRY: [default] The geometry associated with this instance_geometry or nstance_material.
? SCENE_GEOMETRY: Draw the entire scene's geometry but with this effect, not the effects or
materials already associated with the geometry. This is for techniques such as shadow-buffer
generation, where you might be interested only in extracting the Z value from the light. This is
without regard to ordering on the assumption that ZBuffer handles order.
? SCENE_IMAGE: Draw the entire scene naturally into the render targets. Hense producing an image
of the scene.  When used more then once, the later uses must include what has been rendered so far 
to the backbuffer since the first render.  This is for effects that need an accurate image of the scene 
to work on for effects such as postprocessing blurs. 
? FULL_SCREEN_QUAD: Positions are 0,0 to 1,1 and the UVs match.			
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string"/>
	</xs:simpleType>
	<xs:simpleType name="fx_pipeline_stage_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="TESSELLATION"/>
			<xs:enumeration value="VERTEX"/>
			<xs:enumeration value="GEOMETRY"/>
			<xs:enumeration value="FRAGMENT"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="fx_annotate_type">
		<xs:sequence>
			<xs:group ref="fx_annotate_group"/>
		</xs:sequence>
		<xs:attribute name="name" type="xs:token" use="required"/>
	</xs:complexType>
	<xs:complexType name="fx_newparam_type">
		<xs:annotation>
			<xs:documentation>
			This element creates a new, named param object in the FX Runtime, assigns it a type, an initial value, and additional attributes at declaration time.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="annotate" type="fx_annotate_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
					The annotate element allows you to specify an annotation for this new param.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="semantic" type="xs:NCName" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
					The semantic element allows you to specify a semantic for this new param.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="modifier" type="fx_modifier_enum" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
					The modifier element allows you to specify a modifier for this new param.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:group ref="fx_newparam_group"/>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type" use="required">
			<xs:annotation>
				<xs:documentation>
				The sid attribute is a text string value containing the sub-identifier of this element. 
				This value must be unique within the scope of the parent element. Optional attribute.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="fx_include_type">
		<xs:annotation>
			<xs:documentation>
			The include element is used to import source code or precompiled binary shaders into the FX Runtime by referencing an external resource.
			</xs:documentation>
		</xs:annotation>
		<xs:attribute name="sid" type="sid_type" use="required">
			<xs:annotation>
				<xs:documentation>
					The sid attribute is a text string value containing the sub-identifier of this element. 
					This value must be unique within the scope of the parent element. Optional attribute.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="url" type="xs:anyURI" use="required">
			<xs:annotation>
				<xs:documentation>
					The url attribute refers to resource.  This may refer to a local resource using a relative URL 
					fragment identifier that begins with the "#" character. The url attribute may refer to an external 
					resource using an absolute or relative URL.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="fx_code_type">
		<xs:annotation>
			<xs:documentation>
			The fx_code_common type allows you to specify an inline block of source code.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="sid" type="sid_type" use="optional">
					<xs:annotation>
						<xs:documentation>
						The sid attribute is a text string value containing the sub-identifier of this element. 
						This value must be unique within the scope of the parent element. Optional attribute.
						</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="fx_sources_type">
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="inline" type="xs:string">
					<xs:annotation>
						<xs:documentation>this is allows you to include some code right here....like a #define for an uber shader that is imported</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="import">
					<xs:annotation>
						<xs:documentation>Ref attribute identifies the sid of a code or include element</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:attribute name="ref" type="xs:token" use="required"/>
					</xs:complexType>
				</xs:element>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="fx_target_type">
		<xs:annotation>
			<xs:documentation>identify the platform_sku and compiler options to build a binary</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="binary" minOccurs="0">
				<xs:complexType>
					<xs:choice>
						<xs:element name="ref" type="xs:anyURI"/>
						<xs:element name="hex">
							<xs:annotation>
								<xs:documentation>contains a sequence of hexadecimal encoded binary</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:simpleContent>
									<xs:extension base="list_of_hex_binary_type">
										<xs:attribute name="format" type="xs:token">
											<xs:annotation>
												<xs:documentation>binary format which may include target device identificatrion</xs:documentation>
											</xs:annotation>
										</xs:attribute>
									</xs:extension>
								</xs:simpleContent>
							</xs:complexType>
						</xs:element>
					</xs:choice>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="platform" type="xs:string" use="required">
			<xs:annotation>
				<xs:documentation>Name of sub-platform.  May be identical to the platform_series</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="target" type="xs:string" use="optional">
			<xs:annotation>
				<xs:documentation>compiler or linker results symbol.  Ex arbvp1, arbfp1, glslv, glslf, hlslv, hlslf, vs_3_0, ps_3_0</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="options" type="xs:string" use="optional">
			<xs:annotation>
				<xs:documentation>compiler or linker options</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="fx_common_float_or_param_type">
		<xs:choice>
			<xs:element name="float">
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="float_type">
							<xs:attribute name="sid" type="sid_type"/>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="param">
				<xs:complexType>
					<xs:attribute name="ref" type="xs:NCName" use="required"/>
				</xs:complexType>
			</xs:element>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="fx_common_color_or_texture_type">
		<xs:choice>
			<xs:element name="color">
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="fx_color_type">
							<xs:attribute name="sid" type="sid_type"/>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="param">
				<xs:complexType>
					<xs:attribute name="ref" type="xs:NCName" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="texture">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
					<xs:attribute name="texture" type="xs:NCName" use="required"/>
					<xs:attribute name="texcoord" type="xs:NCName" use="required"/>
				</xs:complexType>
			</xs:element>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="fx_common_transparent_type">
		<xs:complexContent>
			<xs:extension base="fx_common_color_or_texture_type">
				<xs:attribute name="opaque" type="fx_opaque_enum" default="A_ONE"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="fx_common_newparam_type">
		<xs:sequence>
			<xs:element name="semantic" type="xs:NCName" minOccurs="0"/>
			<xs:choice>
				<xs:element name="float" type="float_type"/>
				<xs:element name="float2" type="float2_type"/>
				<xs:element name="float3" type="float3_type"/>
				<xs:element name="float4" type="float4_type"/>
				<xs:element name="sampler2D" type="fx_sampler2D_type"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type" use="required">
			<xs:annotation>
				<xs:documentation>
				The sid attribute is a text string value containing the sub-identifier of this element. 
				This value must be unique within the scope of the parent element. Optional attribute.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="profile_common_type">
		<xs:annotation>
			<xs:documentation>
			Opens a block of COMMON platform-specific data types and technique declarations.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0"/>
			<xs:element name="newparam" type="fx_common_newparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="technique">
				<xs:annotation>
					<xs:documentation>
						Holds a description of the textures, samplers, shaders, parameters, and passes necessary for rendering this effect using one method.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="asset" type="asset_type" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									The technique element may contain an asset element.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:choice>
							<xs:element name="constant">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="emission" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="reflective" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="reflectivity" type="fx_common_float_or_param_type" minOccurs="0"/>
										<xs:element name="transparent" type="fx_common_transparent_type" minOccurs="0"/>
										<xs:element name="transparency" type="fx_common_float_or_param_type" minOccurs="0"/>
										<xs:element name="index_of_refraction" type="fx_common_float_or_param_type" minOccurs="0"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="lambert">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="emission" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="ambient" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="diffuse" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="reflective" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="reflectivity" type="fx_common_float_or_param_type" minOccurs="0"/>
										<xs:element name="transparent" type="fx_common_transparent_type" minOccurs="0"/>
										<xs:element name="transparency" type="fx_common_float_or_param_type" minOccurs="0"/>
										<xs:element name="index_of_refraction" type="fx_common_float_or_param_type" minOccurs="0"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="phong">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="emission" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="ambient" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="diffuse" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="specular" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="shininess" type="fx_common_float_or_param_type" minOccurs="0"/>
										<xs:element name="reflective" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="reflectivity" type="fx_common_float_or_param_type" minOccurs="0"/>
										<xs:element name="transparent" type="fx_common_transparent_type" minOccurs="0"/>
										<xs:element name="transparency" type="fx_common_float_or_param_type" minOccurs="0"/>
										<xs:element name="index_of_refraction" type="fx_common_float_or_param_type" minOccurs="0"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="blinn">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="emission" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="ambient" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="diffuse" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="specular" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="shininess" type="fx_common_float_or_param_type" minOccurs="0"/>
										<xs:element name="reflective" type="fx_common_color_or_texture_type" minOccurs="0"/>
										<xs:element name="reflectivity" type="fx_common_float_or_param_type" minOccurs="0"/>
										<xs:element name="transparent" type="fx_common_transparent_type" minOccurs="0"/>
										<xs:element name="transparency" type="fx_common_float_or_param_type" minOccurs="0"/>
										<xs:element name="index_of_refraction" type="fx_common_float_or_param_type" minOccurs="0"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:choice>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									The extra element may appear any number of times.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
					<xs:attribute name="id" type="xs:ID">
						<xs:annotation>
							<xs:documentation>
								The id attribute is a text string containing the unique identifier of this element. 
								This value must be unique within the instance document. Optional attribute.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
					<xs:attribute name="sid" type="sid_type" use="required">
						<xs:annotation>
							<xs:documentation>
								The sid attribute is a text string value containing the sub-identifier of this element. 
								This value must be unique within the scope of the parent element. Optional attribute.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="optional">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="profile_bridge_type">
		<xs:annotation>
			<xs:documentation>Bridge COLLADA FX to an external FX framework such as NVIDIA's CgFX or Microsoft's Direct3D FX</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID"/>
		<xs:attribute name="platform" type="xs:NCName" use="optional">
			<xs:annotation>
				<xs:documentation>The type of platform. This is a vendor-defined character string that indicates the platform or capability target for the technique. Optional</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="url" type="xs:anyURI" use="required">
			<xs:annotation>
				<xs:documentation>The url to the file which we are bridging too</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:simpleType name="gl_max_lights_index_type">
		<xs:restriction base="xs:nonNegativeInteger">
			<xs:minInclusive value="0"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_max_clip_planes_index_type">
		<xs:restriction base="xs:nonNegativeInteger">
			<xs:minInclusive value="0"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_max_texture_image_units_index_type">
		<xs:restriction base="xs:nonNegativeInteger">
			<xs:minInclusive value="0"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_blend_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="ZERO">
				<xs:annotation>
					<xs:appinfo>value=0x0</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ONE">
				<xs:annotation>
					<xs:appinfo>value=0x1</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="SRC_COLOR">
				<xs:annotation>
					<xs:appinfo>value=0x0300</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ONE_MINUS_SRC_COLOR">
				<xs:annotation>
					<xs:appinfo>value=0x0301</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="DEST_COLOR">
				<xs:annotation>
					<xs:appinfo>value=0x0306</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ONE_MINUS_DEST_COLOR">
				<xs:annotation>
					<xs:appinfo>value=0x0307</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="SRC_ALPHA">
				<xs:annotation>
					<xs:appinfo>value=0x0302</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ONE_MINUS_SRC_ALPHA">
				<xs:annotation>
					<xs:appinfo>value=0x0303</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="DST_ALPHA">
				<xs:annotation>
					<xs:appinfo>value=0x0304</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ONE_MINUS_DST_ALPHA">
				<xs:annotation>
					<xs:appinfo>value=0x0305</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="CONSTANT_COLOR">
				<xs:annotation>
					<xs:appinfo>value=0x8001</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ONE_MINUS_CONSTANT_COLOR">
				<xs:annotation>
					<xs:appinfo>value=0x8002</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="CONSTANT_ALPHA">
				<xs:annotation>
					<xs:appinfo>value=0x8003</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ONE_MINUS_CONSTANT_ALPHA">
				<xs:annotation>
					<xs:appinfo>value=0x8004</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="SRC_ALPHA_SATURATE">
				<xs:annotation>
					<xs:appinfo>value=0x0308</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_face_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="FRONT">
				<xs:annotation>
					<xs:appinfo>value=0x0404</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="BACK">
				<xs:annotation>
					<xs:appinfo>value=0x0405</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="FRONT_AND_BACK">
				<xs:annotation>
					<xs:appinfo>value=0x0408</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_blend_equation_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="FUNC_ADD">
				<xs:annotation>
					<xs:appinfo>value=0x8006</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="FUNC_SUBTRACT">
				<xs:annotation>
					<xs:appinfo>value=0x800A</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="FUNC_REVERSE_SUBTRACT">
				<xs:annotation>
					<xs:appinfo>value=0x800B</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="MIN">
				<xs:annotation>
					<xs:appinfo>value=0x8007</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="MAX">
				<xs:annotation>
					<xs:appinfo>value=0x8008</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_func_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="NEVER">
				<xs:annotation>
					<xs:appinfo>value=0x0200</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="LESS">
				<xs:annotation>
					<xs:appinfo>value=0x0201</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="LEQUAL">
				<xs:annotation>
					<xs:appinfo>value=0x0203</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="EQUAL">
				<xs:annotation>
					<xs:appinfo>value=0x0202</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="GREATER">
				<xs:annotation>
					<xs:appinfo>value=0x0204</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="NOTEQUAL">
				<xs:annotation>
					<xs:appinfo>value=0x0205</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="GEQUAL">
				<xs:annotation>
					<xs:appinfo>value=0x0206</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ALWAYS">
				<xs:annotation>
					<xs:appinfo>value=0x0207</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_stencil_op_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="KEEP">
				<xs:annotation>
					<xs:appinfo>value=0x1E00</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ZERO">
				<xs:annotation>
					<xs:appinfo>value=0x0</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="REPLACE">
				<xs:annotation>
					<xs:appinfo>value=0x1E01</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="INCR">
				<xs:annotation>
					<xs:appinfo>value=0x1E02</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="DECR">
				<xs:annotation>
					<xs:appinfo>value=0x1E03</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="INVERT">
				<xs:annotation>
					<xs:appinfo>value=0x150A</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="INCR_WRAP">
				<xs:annotation>
					<xs:appinfo>value=0x8507</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="DECR_WRAP">
				<xs:annotation>
					<xs:appinfo>value=0x8508</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_material_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="EMISSION">
				<xs:annotation>
					<xs:appinfo>value=0x1600</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="AMBIENT">
				<xs:annotation>
					<xs:appinfo>value=0x1200</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="DIFFUSE">
				<xs:annotation>
					<xs:appinfo>value=0x1201</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="SPECULAR">
				<xs:annotation>
					<xs:appinfo>value=0x1202</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="AMBIENT_AND_DIFFUSE">
				<xs:annotation>
					<xs:appinfo>value=0x1602</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_fog_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="LINEAR">
				<xs:annotation>
					<xs:appinfo>value=0x2601</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="EXP">
				<xs:annotation>
					<xs:appinfo>value=0x0800</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="EXP2">
				<xs:annotation>
					<xs:appinfo>value=0x0801</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_fog_coord_src_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="FOG_COORDINATE">
				<xs:annotation>
					<xs:appinfo>value=0x8451</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="FRAGMENT_DEPTH">
				<xs:annotation>
					<xs:appinfo>value=0x8452</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_front_face_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="CW">
				<xs:annotation>
					<xs:appinfo>value=0x0900</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="CCW">
				<xs:annotation>
					<xs:appinfo>value=0x0901</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_light_model_color_control_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="SINGLE_COLOR">
				<xs:annotation>
					<xs:appinfo>value=0x81F9</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="SEPARATE_SPECULAR_COLOR">
				<xs:annotation>
					<xs:appinfo>value=0x81FA</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_logic_op_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="CLEAR">
				<xs:annotation>
					<xs:appinfo>value=0x1500</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="AND">
				<xs:annotation>
					<xs:appinfo>value=0x1501</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="AND_REVERSE">
				<xs:annotation>
					<xs:appinfo>value=0x1502</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="COPY">
				<xs:annotation>
					<xs:appinfo>value=0x1503</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="AND_INVERTED">
				<xs:annotation>
					<xs:appinfo>value=0x1504</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="NOOP">
				<xs:annotation>
					<xs:appinfo>value=0x1505</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="XOR">
				<xs:annotation>
					<xs:appinfo>value=0x1506</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="OR">
				<xs:annotation>
					<xs:appinfo>value=0x1507</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="NOR">
				<xs:annotation>
					<xs:appinfo>value=0x1508</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="EQUIV">
				<xs:annotation>
					<xs:appinfo>value=0x1509</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="INVERT">
				<xs:annotation>
					<xs:appinfo>value=0x150A</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="OR_REVERSE">
				<xs:annotation>
					<xs:appinfo>value=0x150B</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="COPY_INVERTED">
				<xs:annotation>
					<xs:appinfo>value=0x150C</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="NAND">
				<xs:annotation>
					<xs:appinfo>value=0x150E</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="SET">
				<xs:annotation>
					<xs:appinfo>value=0x150F</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_polygon_mode_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="POINT">
				<xs:annotation>
					<xs:appinfo>value=0x1B00</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="LINE">
				<xs:annotation>
					<xs:appinfo>value=0x1B01</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="FILL">
				<xs:annotation>
					<xs:appinfo>value=0x1B02</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_shade_model_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="FLAT">
				<xs:annotation>
					<xs:appinfo>value=0x1D00</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="SMOOTH">
				<xs:annotation>
					<xs:appinfo>value=0x1D01</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_alpha_value_type">
		<xs:restriction base="xs:float">
			<xs:minInclusive value="0.0"/>
			<xs:maxInclusive value="1.0"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gl_enumeration_type">
		<xs:union memberTypes="gl_blend_enum gl_face_enum gl_blend_equation_enum gl_func_enum gl_stencil_op_enum gl_material_enum gl_fog_enum gl_fog_coord_src_enum gl_front_face_enum gl_light_model_color_control_enum gl_logic_op_enum gl_polygon_mode_enum gl_shade_model_enum"/>
	</xs:simpleType>
	<xs:group name="gl_pipeline_settings_group">
		<xs:annotation>
			<xs:documentation>
			A group that defines all of the renderstates used for the CG and GLSL profiles.
			</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element name="alpha_func">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="func">
							<xs:complexType>
								<xs:attribute name="value" type="gl_func_enum" use="optional" default="ALWAYS"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="value">
							<xs:complexType>
								<xs:attribute name="value" type="gl_alpha_value_type" use="optional" default="0.0"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="blend_func">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="src">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_enum" use="optional" default="ONE"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="dest">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_enum" use="optional" default="ZERO"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="blend_func_separate">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="src_rgb">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_enum" use="optional" default="ONE"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="dest_rgb">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_enum" use="optional" default="ZERO"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="src_alpha">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_enum" use="optional" default="ONE"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="dest_alpha">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_enum" use="optional" default="ZERO"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="blend_equation">
				<xs:complexType>
					<xs:attribute name="value" type="gl_blend_equation_enum" use="optional" default="FUNC_ADD"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="blend_equation_separate">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="rgb">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_equation_enum" use="optional" default="FUNC_ADD"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="alpha">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_equation_enum" use="optional" default="FUNC_ADD"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="color_material">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="face">
							<xs:complexType>
								<xs:attribute name="value" type="gl_face_enum" use="optional" default="FRONT_AND_BACK"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="mode">
							<xs:complexType>
								<xs:attribute name="value" type="gl_material_enum" use="optional" default="AMBIENT_AND_DIFFUSE"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="cull_face">
				<xs:complexType>
					<xs:attribute name="value" type="gl_face_enum" use="optional" default="BACK"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="depth_func">
				<xs:complexType>
					<xs:attribute name="value" type="gl_func_enum" use="optional" default="ALWAYS"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="fog_mode">
				<xs:complexType>
					<xs:attribute name="value" type="gl_fog_enum" use="optional" default="EXP"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="fog_coord_src">
				<xs:complexType>
					<xs:attribute name="value" type="gl_fog_coord_src_enum" use="optional" default="FOG_COORDINATE"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="front_face">
				<xs:complexType>
					<xs:attribute name="value" type="gl_front_face_enum" use="optional" default="CCW"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_model_color_control">
				<xs:complexType>
					<xs:attribute name="value" type="gl_light_model_color_control_enum" use="optional" default="SINGLE_COLOR"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="logic_op">
				<xs:complexType>
					<xs:attribute name="value" type="gl_logic_op_enum" use="optional" default="COPY"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="polygon_mode">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="face">
							<xs:complexType>
								<xs:attribute name="value" type="gl_face_enum" use="optional" default="FRONT_AND_BACK"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="mode">
							<xs:complexType>
								<xs:attribute name="value" type="gl_polygon_mode_enum" use="optional" default="FILL"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="shade_model">
				<xs:complexType>
					<xs:attribute name="value" type="gl_shade_model_enum" use="optional" default="SMOOTH"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_func">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="func">
							<xs:complexType>
								<xs:attribute name="value" type="gl_func_enum" use="optional" default="ALWAYS"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="ref">
							<xs:complexType>
								<xs:attribute name="value" type="xs:unsignedByte" use="optional" default="0"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="mask">
							<xs:complexType>
								<xs:attribute name="value" type="xs:unsignedByte" use="optional" default="255"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_op">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="fail">
							<xs:complexType>
								<xs:attribute name="value" type="gl_stencil_op_enum" use="optional" default="KEEP"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="zfail">
							<xs:complexType>
								<xs:attribute name="value" type="gl_stencil_op_enum" use="optional" default="KEEP"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="zpass">
							<xs:complexType>
								<xs:attribute name="value" type="gl_stencil_op_enum" use="optional" default="KEEP"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_func_separate">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="front">
							<xs:complexType>
								<xs:attribute name="value" type="gl_func_enum" use="optional" default="ALWAYS"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="back">
							<xs:complexType>
								<xs:attribute name="value" type="gl_func_enum" use="optional" default="ALWAYS"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="ref">
							<xs:complexType>
								<xs:attribute name="value" type="xs:unsignedByte" use="optional" default="0"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="mask">
							<xs:complexType>
								<xs:attribute name="value" type="xs:unsignedByte" use="optional" default="255"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_op_separate">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="face">
							<xs:complexType>
								<xs:attribute name="value" type="gl_face_enum" use="optional" default="FRONT_AND_BACK"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="fail">
							<xs:complexType>
								<xs:attribute name="value" type="gl_stencil_op_enum" use="optional" default="KEEP"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="zfail">
							<xs:complexType>
								<xs:attribute name="value" type="gl_stencil_op_enum" use="optional" default="KEEP"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="zpass">
							<xs:complexType>
								<xs:attribute name="value" type="gl_stencil_op_enum" use="optional" default="KEEP"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_mask_separate">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="face">
							<xs:complexType>
								<xs:attribute name="value" type="gl_face_enum" use="optional" default="FRONT_AND_BACK"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="mask">
							<xs:complexType>
								<xs:attribute name="value" type="xs:unsignedByte" use="optional" default="255"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_ambient">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 0 1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_diffuse">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 0 0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_specular">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 0 0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_position">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 1 0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_constant_attenuation">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_linear_attenuation">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_quadratic_attenuation">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_spot_cutoff">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="180"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_spot_direction">
				<xs:complexType>
					<xs:attribute name="value" type="float3_type" use="optional" default="0 0 -1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_spot_exponent">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="texture1D">
				<xs:complexType>
					<xs:choice>
						<xs:element name="value" type="fx_sampler1D_type"/>
						<xs:element name="param" type="xs:NCName"/>
					</xs:choice>
					<xs:attribute name="index" type="gl_max_texture_image_units_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="texture2D">
				<xs:complexType>
					<xs:choice>
						<xs:element name="value" type="fx_sampler2D_type"/>
						<xs:element name="param" type="xs:NCName"/>
					</xs:choice>
					<xs:attribute name="index" type="gl_max_texture_image_units_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="texture3D">
				<xs:complexType>
					<xs:choice>
						<xs:element name="value" type="fx_sampler3D_type"/>
						<xs:element name="param" type="xs:NCName"/>
					</xs:choice>
					<xs:attribute name="index" type="gl_max_texture_image_units_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="textureCUBE">
				<xs:complexType>
					<xs:choice>
						<xs:element name="value" type="fx_samplerCUBE_type"/>
						<xs:element name="param" type="xs:NCName"/>
					</xs:choice>
					<xs:attribute name="index" type="gl_max_texture_image_units_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="textureRECT">
				<xs:complexType>
					<xs:choice>
						<xs:element name="value" type="fx_samplerRECT_type"/>
						<xs:element name="param" type="xs:NCName"/>
					</xs:choice>
					<xs:attribute name="index" type="gl_max_texture_image_units_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="textureDEPTH">
				<xs:complexType>
					<xs:choice>
						<xs:element name="value" type="fx_samplerDEPTH_type"/>
						<xs:element name="param" type="xs:NCName"/>
					</xs:choice>
					<xs:attribute name="index" type="gl_max_texture_image_units_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="texture1D_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_texture_image_units_index_type"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="texture2D_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_texture_image_units_index_type"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="texture3D_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_texture_image_units_index_type"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="textureCUBE_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_texture_image_units_index_type"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="textureRECT_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_texture_image_units_index_type"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="textureDEPTH_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_texture_image_units_index_type"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="texture_env_color">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_texture_image_units_index_type"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="texture_env_mode">
				<xs:complexType>
					<xs:attribute name="value" type="xs:string" use="optional"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_texture_image_units_index_type"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="clip_plane">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 0 0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_clip_planes_index_type"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="clip_plane_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gl_max_clip_planes_index_type"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="blend_color">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 0 0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="color_mask">
				<xs:complexType>
					<xs:attribute name="value" type="bool4_type" use="optional" default="true true true true"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="depth_bounds">
				<xs:complexType>
					<xs:attribute name="value" type="float2_type" use="optional"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="depth_mask">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="true"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="depth_range">
				<xs:complexType>
					<xs:attribute name="value" type="float2_type" use="optional" default="0 1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="fog_density">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="fog_start">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="fog_end">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="fog_color">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 0 0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_model_ambient">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0.2 0.2 0.2 1.0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="lighting_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="line_stipple">
				<xs:complexType>
					<xs:attribute name="value" type="int2_type" use="optional" default="1 65536"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="line_width">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="material_ambient">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0.2 0.2 0.2 1.0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="material_diffuse">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0.8 0.8 0.8 1.0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="material_emission">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 0 1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="material_shininess">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="material_specular">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 0 1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="model_view_matrix">
				<xs:complexType>
					<xs:attribute name="value" type="float4x4_type" use="optional" default="1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="point_distance_attenuation">
				<xs:complexType>
					<xs:attribute name="value" type="float3_type" use="optional" default="1 0 0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="point_fade_threshold_size">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="point_size">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="point_size_min">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="point_size_max">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="polygon_offset">
				<xs:complexType>
					<xs:attribute name="value" type="float2_type" use="optional" default="0 0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="projection_matrix">
				<xs:complexType>
					<xs:attribute name="value" type="float4x4_type" use="optional" default="1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="scissor">
				<xs:complexType>
					<xs:attribute name="value" type="int4_type" use="optional"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_mask">
				<xs:complexType>
					<xs:attribute name="value" type="int_type" use="optional" default="4294967295"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="alpha_test_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="blend_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="color_logic_op_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="color_material_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="true"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="cull_face_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="depth_bounds_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="depth_clamp_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="depth_test_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="dither_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="true"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="fog_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_model_local_viewer_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_model_two_side_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="line_smooth_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="line_stipple_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="logic_op_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="multisample_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="normalize_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="point_smooth_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="polygon_offset_fill_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="polygon_offset_line_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="polygon_offset_point_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="polygon_smooth_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="polygon_stipple_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="rescale_normal_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="sample_alpha_to_coverage_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="sample_alpha_to_one_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="sample_coverage_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="scissor_test_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_test_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
		</xs:choice>
	</xs:group>
	<xs:group name="gles2_pipeline_settings_group">
		<xs:annotation>
			<xs:documentation>All of the pass state settings for OpenGL ES 2 API</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element name="blend_color">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 0 0"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="blend_equation">
				<xs:complexType>
					<xs:attribute name="value" type="gl_blend_equation_enum" use="optional" default="FUNC_ADD"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="blend_equation_separate">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="rgb">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_equation_enum" use="optional" default="FUNC_ADD"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="alpha">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_equation_enum" use="optional" default="FUNC_ADD"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="blend_func">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="src">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_enum" use="optional" default="ONE"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="dest">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_enum" use="optional" default="ZERO"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="blend_func_separate">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="src_rgb">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_enum" use="optional" default="ONE"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="dest_rgb">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_enum" use="optional" default="ZERO"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="src_alpha">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_enum" use="optional" default="ONE"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="dest_alpha">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_enum" use="optional" default="ZERO"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="color_mask">
				<xs:complexType>
					<xs:attribute name="value" type="bool4_type" use="optional" default="true true true true"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="cull_face">
				<xs:complexType>
					<xs:attribute name="value" type="gl_face_enum" use="optional" default="BACK"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="depth_func">
				<xs:complexType>
					<xs:attribute name="value" type="gl_func_enum" use="optional" default="ALWAYS"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="depth_mask">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="true"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="depth_range">
				<xs:complexType>
					<xs:attribute name="value" type="float2_type" use="optional" default="0 1"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="front_face">
				<xs:complexType>
					<xs:attribute name="value" type="gl_front_face_enum" use="optional" default="CCW"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="line_width">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="polygon_offset">
				<xs:complexType>
					<xs:attribute name="value" type="float2_type" use="optional" default="0 0"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="point_size">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="sample_coverage">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="value">
							<xs:complexType>
								<xs:attribute name="value" type="xs:float" use="optional"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="invert">
							<xs:complexType>
								<xs:attribute name="value" type="xs:boolean" use="optional"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="scissor">
				<xs:complexType>
					<xs:attribute name="value" type="int4_type" use="optional"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_func">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="func">
							<xs:complexType>
								<xs:attribute name="value" type="gl_func_enum" use="optional" default="ALWAYS"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="ref">
							<xs:complexType>
								<xs:attribute name="value" type="xs:unsignedByte" use="optional" default="0"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="mask">
							<xs:complexType>
								<xs:attribute name="value" type="xs:unsignedByte" use="optional" default="255"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_func_separate">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="front">
							<xs:complexType>
								<xs:attribute name="value" type="gl_func_enum" use="optional" default="ALWAYS"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="back">
							<xs:complexType>
								<xs:attribute name="value" type="gl_func_enum" use="optional" default="ALWAYS"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="ref">
							<xs:complexType>
								<xs:attribute name="value" type="xs:unsignedByte" use="optional" default="0"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="mask">
							<xs:complexType>
								<xs:attribute name="value" type="xs:unsignedByte" use="optional" default="255"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_mask">
				<xs:complexType>
					<xs:attribute name="value" type="int_type" use="optional" default="4294967295"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_mask_separate">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="face">
							<xs:complexType>
								<xs:attribute name="value" type="gl_face_enum" use="optional" default="FRONT_AND_BACK"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="mask">
							<xs:complexType>
								<xs:attribute name="value" type="xs:unsignedByte" use="optional" default="255"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_op">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="fail">
							<xs:complexType>
								<xs:attribute name="value" type="gl_stencil_op_enum" use="optional" default="KEEP"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="zfail">
							<xs:complexType>
								<xs:attribute name="value" type="gl_stencil_op_enum" use="optional" default="KEEP"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="zpass">
							<xs:complexType>
								<xs:attribute name="value" type="gl_stencil_op_enum" use="optional" default="KEEP"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_op_separate">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="face">
							<xs:complexType>
								<xs:attribute name="value" type="gl_face_enum" use="optional" default="FRONT_AND_BACK"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="fail">
							<xs:complexType>
								<xs:attribute name="value" type="gl_stencil_op_enum" use="optional" default="KEEP"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="zfail">
							<xs:complexType>
								<xs:attribute name="value" type="gl_stencil_op_enum" use="optional" default="KEEP"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="zpass">
							<xs:complexType>
								<xs:attribute name="value" type="gl_stencil_op_enum" use="optional" default="KEEP"/>
								<xs:attribute name="param" type="xs:token" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="blend_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="cull_face_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="depth_test_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="dither_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="true"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="polygon_offset_fill_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="point_size_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="sample_alpha_to_coverage_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="sample_coverage_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="scissor_test_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_test_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:token" use="optional"/>
				</xs:complexType>
			</xs:element>
		</xs:choice>
	</xs:group>
	<xs:group name="gles2_value_group">
		<xs:annotation>
			<xs:documentation>New parameters may choose to type themselves by value, providing a default.</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element name="bool" type="xs:boolean"/>
			<xs:element name="bvec2" type="bool2_type"/>
			<xs:element name="bvec3" type="bool3_type"/>
			<xs:element name="bvec4" type="bool4_type"/>
			<xs:element name="float" type="float_type"/>
			<xs:element name="vec2" type="float2_type"/>
			<xs:element name="vec3" type="float3_type"/>
			<xs:element name="vec4" type="float4_type"/>
			<xs:element name="mat2" type="float2x2_type"/>
			<xs:element name="mat3" type="float3x3_type"/>
			<xs:element name="mat4" type="float4x4_type"/>
			<xs:element name="int" type="int_type"/>
			<xs:element name="ivec2" type="int2_type"/>
			<xs:element name="ivec3" type="int3_type"/>
			<xs:element name="ivec4" type="int4_type"/>
			<xs:element name="enum" type="gl_enumeration_type"/>
			<xs:element name="sampler2D" type="fx_sampler2D_type"/>
			<xs:element name="sampler3D" type="fx_sampler3D_type">
				<xs:annotation>
					<xs:documentation>not in baseline spec but probably available in extensions</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="samplerCUBE" type="fx_samplerCUBE_type"/>
			<xs:element name="samplerDEPTH" type="fx_samplerDEPTH_type">
				<xs:annotation>
					<xs:documentation>not in baseline spec but probably available in extensions</xs:documentation>
				</xs:annotation>
			</xs:element>
<!--
			<xs:element name="usertype">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="setparam" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Use a series of these to set the members by name.  The ref attribute will be relative to the struct you are in right now.</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:group ref="gles2_value_group" minOccurs="0" maxOccurs="unbounded"/>
								</xs:sequence>
								<xs:attribute name="ref" type="xs:token" use="required">
									<xs:annotation>
										<xs:documentation>Symbol name of the member</xs:documentation>
									</xs:annotation>
								</xs:attribute>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
					<xs:attribute name="typename" type="xs:token" use="required">
						<xs:annotation>
							<xs:documentation>Symbol for type or structure in shader code.   This aids in type-checking, resolution of bindings, and support interfaces</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="array">
				<xs:complexType>
					<xs:sequence>
						<xs:group ref="gles2_value_group" maxOccurs="unbounded"/>
					</xs:sequence>
					<xs:attribute name="length" type="xs:positiveInteger" use="required">
						<xs:annotation>
							<xs:documentation>Enable applications to validate element count without shader having been compiled</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
-->
		</xs:choice>
	</xs:group>
	<xs:complexType name="gles2_newparam_type">
		<xs:annotation>
			<xs:documentation>Declare a new parameter in the profile to be bound to the pipeline state or shaders</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="annotate" type="fx_annotate_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="semantic" type="xs:NCName" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
					The semantic element allows you to specify a semantic for this new param.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="modifier" type="fx_modifier_enum" minOccurs="0"/>
			<xs:group ref="gles2_value_group"/>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type" use="required"/>
	</xs:complexType>
	<xs:complexType name="gles2_shader_type">
		<xs:annotation>
			<xs:documentation>Identify code fragments and bind their parameters to effect parameters to identify how their values will be filled in</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="sources">
				<xs:annotation>
					<xs:documentation>sid of the code or include element which provides the source for this shader.  Code may come from local or library_code.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="fx_sources_type">
							<xs:attribute name="entry" type="xs:token" default="main">
								<xs:annotation>
									<xs:documentation>Not used by GLSL.  Some languages require functional entry points.  GLSL always uses "main".  CG requires an entry point</xs:documentation>
								</xs:annotation>
							</xs:attribute>
						</xs:extension>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="compiler" type="fx_target_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Not used by GLSL.  This identifies a very specific binary target format for such things as a specific generation of GPU.  Ex. NV4x</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="stage" type="fx_pipeline_stage_enum" use="required">
			<xs:annotation>
				<xs:documentation>GPU Pipeline stage for this programmable shader. Current standards are VERTEX (vertex shader), FRAGMENT (pixel or fragment shader).  These are recognized by both GLSL and CG</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="gles2_program_type">
		<xs:annotation>
			<xs:documentation>a program is one or more shaders linked together</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="shader" type="gles2_shader_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>compile shader stages</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="linker" type="fx_target_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>link shaders into program</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="bind_attribute" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Bind attributes.  If not bound then it is assumed to be the same semantic as the variable name.  If the variable name is prefixed with "gl_" or "sv_" then the prefix may be ignored.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:choice>
						<xs:element name="semantic" type="xs:token">
							<xs:annotation>
								<xs:documentation>Bind attributes to semantics to enable semantic association to attributes that are not redeclared as parameters.  Without this, the semantic is the same as the attribute's name.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:choice>
					<xs:attribute name="symbol" type="xs:token" use="required">
						<xs:annotation>
							<xs:documentation>shader variable name</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="bind_uniform" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Bind uniforms and samplers</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:choice>
						<xs:element name="param">
							<xs:annotation>
								<xs:documentation>Bind uniforms to parameters</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:attribute name="ref" type="xs:NCName" use="required">
									<xs:annotation>
										<xs:documentation>SID of parameter</xs:documentation>
									</xs:annotation>
								</xs:attribute>
							</xs:complexType>
						</xs:element>
						<xs:group ref="gles2_value_group"/>
					</xs:choice>
					<xs:attribute name="symbol" type="xs:token" use="required">
						<xs:annotation>
							<xs:documentation>shader variable name</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="gles2_pass_type">
		<xs:annotation>
			<xs:documentation>Set up pipeline state and shaders for rendering</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="annotate" type="fx_annotate_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Add metadata to this pass that may be used by games or tools to make decisions</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="states" minOccurs="0">
				<xs:annotation>
					<xs:documentation>API state</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence minOccurs="0" maxOccurs="unbounded">
						<xs:group ref="gles2_pipeline_settings_group"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="program" type="gles2_program_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>A vertex_shader and fragment_shader are linked together to produce a OpenGL ES 2 program.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="evaluate" minOccurs="0">
				<xs:annotation>
					<xs:documentation>runtime execution helpers</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="color_target" type="fx_colortarget_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Identify that this pass is intended to render it's colors into a surface parameter</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="depth_target" type="fx_depthtarget_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Identify that this pass is intended to render it's depthinto a surface parameter</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="stencil_target" type="fx_stenciltarget_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Identify that this pass is intended to render it's stencil bits into a surface parameter</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="color_clear" type="fx_clearcolor_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>The indexed color render target is supposed to be cleared to this color</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="stencil_clear" type="fx_clearstencil_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>The indexed stencil bits render target is supposed to be cleared to this color</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="depth_clear" type="fx_cleardepth_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>The indexed depth render target is supposed to be cleared to this color</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="draw" type="fx_draw_type" minOccurs="0">
							<xs:annotation>
								<xs:documentation>Identify what type of goemetry should be drawn durring this pass.  See comments in fx_draw_common for a list of common strings.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type" use="optional">
			<xs:annotation>
				<xs:documentation>
											The sid attribute is a text string value containing the sub-identifier of this element. 
											This value must be unique within the scope of the parent element. Optional attribute.
											</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="profile_gles2_type">
		<xs:annotation>
			<xs:documentation>FX for OpenGL ES 2.0</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0"/>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="include" type="fx_include_type">
					<xs:annotation>
						<xs:documentation>Include shader code from a remote URI.  If binary, assume raw.</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="code" type="fx_code_type">
					<xs:annotation>
						<xs:documentation>The fx_code_profile type allows you to specify an inline block of source code.  It is HIGHLY recommended to use a CDATA block inside to avoid issues with</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:choice>
			<xs:element name="newparam" minOccurs="0" maxOccurs="unbounded">
				<xs:complexType>
					<xs:complexContent>
						<xs:extension base="gles2_newparam_type"/>
					</xs:complexContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="technique" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						Holds a description of the textures, samplers, shaders, parameters, and passes necessary for rendering this effect using one method.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="asset" type="asset_type" minOccurs="0"/>
						<xs:element name="annotate" type="fx_annotate_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>Add metadata to this pass that may be used by games or tools to make decisions</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="pass" type="gles2_pass_type" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									A static declaration of all the render states, shaders, and settings for one rendering pipeline.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
					<xs:attribute name="id" type="xs:ID"/>
					<xs:attribute name="sid" type="sid_type" use="required">
						<xs:annotation>
							<xs:documentation>
								The sid attribute is a text string value containing the sub-identifier of this element. 
								This value must be unique within the scope of the parent element. Optional attribute.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>Unique identifier for referencing</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="language" type="xs:NCName" use="required">
			<xs:annotation>
				<xs:documentation>Shading language that will be used.  This is not an enum to support future languages.  Current known languages at this time are GLSL-ES, CG</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="platforms" type="list_of_names_type">
			<xs:annotation>
				<xs:documentation>Support for multiple OpenGL ES 2.0 platforms</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:group name="glsl_value_group">
		<xs:annotation>
			<xs:documentation>
			A group that specifies the allowable types for GLSL profile parameters.
			</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element name="bool" type="xs:boolean"/>
			<xs:element name="bool2" type="bool2_type"/>
			<xs:element name="bool3" type="bool3_type"/>
			<xs:element name="bool4" type="bool4_type"/>
			<xs:element name="float" type="float_type"/>
			<xs:element name="float2" type="float2_type"/>
			<xs:element name="float3" type="float3_type"/>
			<xs:element name="float4" type="float4_type"/>
			<xs:element name="float2x2" type="float2x2_type"/>
			<xs:element name="float3x3" type="float3x3_type"/>
			<xs:element name="float4x4" type="float4x4_type"/>
			<xs:element name="int" type="int_type"/>
			<xs:element name="int2" type="int2_type"/>
			<xs:element name="int3" type="int3_type"/>
			<xs:element name="int4" type="int4_type"/>
			<xs:element name="sampler1D" type="fx_sampler1D_type"/>
			<xs:element name="sampler2D" type="fx_sampler2D_type"/>
			<xs:element name="sampler3D" type="fx_sampler3D_type"/>
			<xs:element name="samplerCUBE" type="fx_samplerCUBE_type"/>
			<xs:element name="samplerRECT" type="fx_samplerRECT_type"/>
			<xs:element name="samplerDEPTH" type="fx_samplerDEPTH_type"/>
			<xs:element name="enum" type="gl_enumeration_type"/>
<!--
			<xs:element name="array" type="glsl_array_type"/>
-->
		</xs:choice>
	</xs:group>
	<xs:complexType name="glsl_array_type">
		<xs:annotation>
			<xs:documentation>
			The glsl_newarray_type element is used to creates a parameter of a one-dimensional array type.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:annotation>
				<xs:documentation>First element types the array.  If more than one then init entire array and must match length attribute.  If only one then repeat based on length attribute.</xs:documentation>
			</xs:annotation>
			<xs:group ref="glsl_value_group" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="length" type="xs:positiveInteger" use="required">
			<xs:annotation>
				<xs:documentation>
				The length attribute specifies the length of the array.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="glsl_newparam_type">
		<xs:sequence>
			<xs:element name="annotate" type="fx_annotate_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="semantic" type="xs:NCName" minOccurs="0"/>
			<xs:element name="modifier" type="fx_modifier_enum" minOccurs="0"/>
			<xs:group ref="glsl_value_group"/>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type" use="required"/>
	</xs:complexType>
	<xs:complexType name="glsl_shader_type">
		<xs:annotation>
			<xs:documentation>Identify code fragments and bind their parameters to effect parameters to identify how their values will be filled in</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="sources" type="fx_sources_type">
				<xs:annotation>
					<xs:documentation>sid of the code or include element which provides the source for this shader.  Code may come from local or library_code.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="stage" type="fx_pipeline_stage_enum" use="required">
			<xs:annotation>
				<xs:documentation>GPU Pipeline stage for this programmable shader. Current standards are VERTEX (vertex shader), FRAGMENT (pixel or fragment shader).  These are recognized by both GLSL and CG</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="glsl_program_type">
		<xs:annotation>
			<xs:documentation>a program is one or more shaders linked together</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="shader" type="glsl_shader_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>compile shader stages</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="bind_attribute" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Bind attributes.  If not bound then it is assumed to be the same semantic as the variable name.  If the variable name is prefixed with "gl_" or "sv_" then the prefix may be ignored.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:choice>
						<xs:element name="semantic" type="xs:token">
							<xs:annotation>
								<xs:documentation>Bind attributes to semantics to enable semantic association to attributes that are not redeclared as parameters.  Without this, the semantic is the same as the attribute's name.</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:choice>
					<xs:attribute name="symbol" type="xs:token" use="required">
						<xs:annotation>
							<xs:documentation>shader variable name</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="bind_uniform" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Bind uniforms and samplers</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:choice>
						<xs:element name="param">
							<xs:annotation>
								<xs:documentation>Bind uniforms to parameters</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:attribute name="ref" type="xs:NCName" use="required">
									<xs:annotation>
										<xs:documentation>SID of parameter</xs:documentation>
									</xs:annotation>
								</xs:attribute>
							</xs:complexType>
						</xs:element>
						<xs:group ref="glsl_value_group"/>
					</xs:choice>
					<xs:attribute name="symbol" type="xs:token" use="required">
						<xs:annotation>
							<xs:documentation>shader variable name</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="profile_glsl_type">
		<xs:annotation>
			<xs:documentation>
			Opens a block of GLSL platform-specific data types and technique declarations.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0"/>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="code" type="fx_code_type"/>
				<xs:element name="include" type="fx_include_type"/>
			</xs:choice>
			<xs:element name="newparam" type="glsl_newparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="technique" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						Holds a description of the textures, samplers, shaders, parameters, and passes necessary for rendering this effect using one method.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="asset" type="asset_type" minOccurs="0"/>
						<xs:element name="annotate" type="fx_annotate_type" minOccurs="0" maxOccurs="unbounded"/>
						<xs:element name="pass" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									A static declaration of all the render states, shaders, and settings for one rendering pipeline.
									</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="annotate" type="fx_annotate_type" minOccurs="0" maxOccurs="unbounded"/>
									<xs:element name="states" minOccurs="0">
										<xs:complexType>
											<xs:sequence>
												<xs:group ref="gl_pipeline_settings_group" minOccurs="0" maxOccurs="unbounded"/>
											</xs:sequence>
										</xs:complexType>
									</xs:element>
									<xs:element name="program" type="glsl_program_type" minOccurs="0"/>
									<xs:element name="evaluate" minOccurs="0">
										<xs:complexType>
											<xs:sequence>
												<xs:element name="color_target" type="fx_colortarget_type" minOccurs="0" maxOccurs="unbounded"/>
												<xs:element name="depth_target" type="fx_depthtarget_type" minOccurs="0" maxOccurs="unbounded"/>
												<xs:element name="stencil_target" type="fx_stenciltarget_type" minOccurs="0" maxOccurs="unbounded"/>
												<xs:element name="color_clear" type="fx_clearcolor_type" minOccurs="0" maxOccurs="unbounded"/>
												<xs:element name="depth_clear" type="fx_cleardepth_type" minOccurs="0" maxOccurs="unbounded"/>
												<xs:element name="stencil_clear" type="fx_clearstencil_type" minOccurs="0" maxOccurs="unbounded"/>
												<xs:element name="draw" type="fx_draw_type" minOccurs="0"/>
											</xs:sequence>
										</xs:complexType>
									</xs:element>
									<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
								</xs:sequence>
								<xs:attribute name="sid" type="sid_type" use="optional">
									<xs:annotation>
										<xs:documentation>
											The sid attribute is a text string value containing the sub-identifier of this element. 
											This value must be unique within the scope of the parent element. Optional attribute.
											</xs:documentation>
									</xs:annotation>
								</xs:attribute>
							</xs:complexType>
						</xs:element>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
					<xs:attribute name="id" type="xs:ID">
						<xs:annotation>
							<xs:documentation>
								The id attribute is a text string containing the unique identifier of this element. 
								This value must be unique within the instance document. Optional attribute.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
					<xs:attribute name="sid" type="sid_type" use="required">
						<xs:annotation>
							<xs:documentation>
								The sid attribute is a text string value containing the sub-identifier of this element. 
								This value must be unique within the scope of the parent element. Optional attribute.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="optional">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="platform" type="xs:NCName" use="optional" default="PC">
			<xs:annotation>
				<xs:documentation>
					The type of platform. This is a vendor-defined character string that indicates the platform or capability target for the technique. Optional
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="cg_array_type">
		<xs:annotation>
			<xs:documentation>
			Creates a parameter of a one-dimensional array type.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:group ref="cg_param_group" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>First element types the array.  If more than one then init entire array and must match length attribute.  If only one then repeat based on length attribute.</xs:documentation>
				</xs:annotation>
			</xs:group>
		</xs:sequence>
		<xs:attribute name="length" type="xs:positiveInteger" use="required">
			<xs:annotation>
				<xs:documentation>
				The length attribute specifies the length of the array.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="resizable" type="xs:boolean" use="optional" default="false">
			<xs:annotation>
				<xs:documentation>The array may be resized when changed because it is connected to a Cg unsized array.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="cg_setparam_type">
		<xs:annotation>
			<xs:documentation>
			Assigns a new value to a previously defined parameter.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:group ref="cg_param_group"/>
		</xs:sequence>
		<xs:attribute name="ref" type="xs:token" use="required"/>
	</xs:complexType>
	<xs:group name="cg_param_group">
		<xs:annotation>
			<xs:documentation>
			A group that specifies the allowable types for CG profile parameters.
			</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element name="bool" type="xs:boolean"/>
			<xs:element name="bool2" type="bool2_type"/>
			<xs:element name="bool3" type="bool3_type"/>
			<xs:element name="bool4" type="bool4_type"/>
			<xs:element name="bool2x1" type="bool2_type"/>
			<xs:element name="bool2x2" type="bool2x2_type"/>
			<xs:element name="bool2x3" type="bool2x3_type"/>
			<xs:element name="bool2x4" type="bool2x4_type"/>
			<xs:element name="bool3x1" type="bool3_type"/>
			<xs:element name="bool3x2" type="bool3x2_type"/>
			<xs:element name="bool3x3" type="bool3x3_type"/>
			<xs:element name="bool3x4" type="bool3x4_type"/>
			<xs:element name="bool4x1" type="bool4_type"/>
			<xs:element name="bool4x2" type="bool4x2_type"/>
			<xs:element name="bool4x3" type="bool4x3_type"/>
			<xs:element name="bool4x4" type="bool4x4_type"/>
			<xs:element name="float" type="float_type"/>
			<xs:element name="float2" type="float2_type"/>
			<xs:element name="float3" type="float3_type"/>
			<xs:element name="float4" type="float4_type"/>
			<xs:element name="float2x1" type="float2_type"/>
			<xs:element name="float2x2" type="float2x2_type"/>
			<xs:element name="float2x3" type="float2x3_type"/>
			<xs:element name="float2x4" type="float2x4_type"/>
			<xs:element name="float3x1" type="float3_type"/>
			<xs:element name="float3x2" type="float3x2_type"/>
			<xs:element name="float3x3" type="float3x3_type"/>
			<xs:element name="float3x4" type="float3x4_type"/>
			<xs:element name="float4x1" type="float4_type"/>
			<xs:element name="float4x2" type="float4x2_type"/>
			<xs:element name="float4x3" type="float4x3_type"/>
			<xs:element name="float4x4" type="float4x4_type"/>
			<xs:element name="int" type="int_type"/>
			<xs:element name="int2" type="int2_type"/>
			<xs:element name="int3" type="int3_type"/>
			<xs:element name="int4" type="int4_type"/>
			<xs:element name="int2x1" type="int2_type"/>
			<xs:element name="int2x2" type="int2x2_type"/>
			<xs:element name="int2x3" type="int2x3_type"/>
			<xs:element name="int2x4" type="int2x4_type"/>
			<xs:element name="int3x1" type="int3_type"/>
			<xs:element name="int3x2" type="int3x2_type"/>
			<xs:element name="int3x3" type="int3x3_type"/>
			<xs:element name="int3x4" type="int3x4_type"/>
			<xs:element name="int4x1" type="int4_type"/>
			<xs:element name="int4x2" type="int4x2_type"/>
			<xs:element name="int4x3" type="int4x3_type"/>
			<xs:element name="int4x4" type="int4x4_type"/>
			<xs:element name="half" type="float_type"/>
			<xs:element name="half2" type="float2_type"/>
			<xs:element name="half3" type="float3_type"/>
			<xs:element name="half4" type="float4_type"/>
			<xs:element name="half2x1" type="float2_type"/>
			<xs:element name="half2x2" type="float2x2_type"/>
			<xs:element name="half2x3" type="float2x3_type"/>
			<xs:element name="half2x4" type="float2x4_type"/>
			<xs:element name="half3x1" type="float3_type"/>
			<xs:element name="half3x2" type="float3x2_type"/>
			<xs:element name="half3x3" type="float3x3_type"/>
			<xs:element name="half3x4" type="float3x4_type"/>
			<xs:element name="half4x1" type="float4_type"/>
			<xs:element name="half4x2" type="float4x2_type"/>
			<xs:element name="half4x3" type="float4x3_type"/>
			<xs:element name="half4x4" type="float4x4_type"/>
			<xs:element name="fixed" type="float_type"/>
			<xs:element name="fixed2" type="float2_type"/>
			<xs:element name="fixed3" type="float3_type"/>
			<xs:element name="fixed4" type="float4_type"/>
			<xs:element name="fixed2x1" type="float2_type"/>
			<xs:element name="fixed2x2" type="float2x2_type"/>
			<xs:element name="fixed2x3" type="float2x3_type"/>
			<xs:element name="fixed2x4" type="float2x4_type"/>
			<xs:element name="fixed3x1" type="float3_type"/>
			<xs:element name="fixed3x2" type="float3x2_type"/>
			<xs:element name="fixed3x3" type="float3x3_type"/>
			<xs:element name="fixed3x4" type="float3x4_type"/>
			<xs:element name="fixed4x1" type="float4_type"/>
			<xs:element name="fixed4x2" type="float4x2_type"/>
			<xs:element name="fixed4x3" type="float4x3_type"/>
			<xs:element name="fixed4x4" type="float4x4_type"/>
			<xs:element name="sampler1D" type="fx_sampler1D_type"/>
			<xs:element name="sampler2D" type="fx_sampler2D_type"/>
			<xs:element name="sampler3D" type="fx_sampler3D_type"/>
			<xs:element name="samplerRECT" type="fx_samplerRECT_type"/>
			<xs:element name="samplerCUBE" type="fx_samplerCUBE_type"/>
			<xs:element name="samplerDEPTH" type="fx_samplerDEPTH_type"/>
			<xs:element name="string" type="xs:string"/>
			<xs:element name="enum" type="gl_enumeration_type"/>
<!--
			<xs:element name="array" type="cg_array_type"/>
			<xs:element name="usertype" type="cg_user_type"/>
-->
		</xs:choice>
	</xs:group>
	<xs:complexType name="cg_user_type">
		<xs:annotation>
			<xs:documentation>
			Creates an instance of a structured class.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence minOccurs="0">
			<xs:annotation>
				<xs:documentation>Some usertypes do not have data.  They may be used only to implement interface functions.</xs:documentation>
			</xs:annotation>
			<xs:element name="setparam" type="cg_setparam_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Use a series of these to set the members by name.  The ref attribute will be relative to the usertype you are in right now.</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="typename" type="xs:token" use="required"/>
		<xs:attribute name="source" type="xs:NCName" use="optional">
			<xs:annotation>
				<xs:documentation>Reference a code or include element which defines the usertype
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="cg_newparam_type">
		<xs:annotation>
			<xs:documentation>
			Create a new, named param object in the CG Runtime, assign it a type, an initial value, and additional attributes at declaration time.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="annotate" type="fx_annotate_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
					The annotate element allows you to specify an annotation for this new param.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="semantic" type="xs:NCName" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
					The semantic element allows you to specify a semantic for this new param.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="modifier" type="fx_modifier_enum" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
					The modifier element allows you to specify a modifier for this new param.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:group ref="cg_param_group"/>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type" use="required"/>
	</xs:complexType>
	<xs:complexType name="cg_pass_type">
		<xs:sequence>
			<xs:element name="annotate" type="fx_annotate_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="states" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:group ref="gl_pipeline_settings_group" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="program" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="shader" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
													Declare and prepare a shader for execution in the rendering pipeline of a pass.
													</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="sources">
										<xs:annotation>
											<xs:documentation>collect the sources together for the shader.  Use concat to make the final string.																</xs:documentation>
										</xs:annotation>
										<xs:complexType>
											<xs:complexContent>
												<xs:extension base="fx_sources_type">
													<xs:attribute name="entry" type="xs:token" use="required">
														<xs:annotation>
															<xs:documentation>entry function name for this shader</xs:documentation>
														</xs:annotation>
													</xs:attribute>
												</xs:extension>
											</xs:complexContent>
										</xs:complexType>
									</xs:element>
									<xs:element name="compiler" type="fx_target_type" minOccurs="0" maxOccurs="unbounded"/>
									<xs:element name="bind_uniform" minOccurs="0" maxOccurs="unbounded">
										<xs:annotation>
											<xs:documentation>
																Binds values to uniform inputs of a shader.
																</xs:documentation>
										</xs:annotation>
										<xs:complexType>
											<xs:choice>
												<xs:element name="param">
													<xs:annotation>
														<xs:documentation>
																			References a predefined parameter in shader binding declarations.
																			</xs:documentation>
													</xs:annotation>
													<xs:complexType>
														<xs:attribute name="ref" type="xs:NCName" use="required"/>
													</xs:complexType>
												</xs:element>
												<xs:group ref="cg_param_group"/>
											</xs:choice>
											<xs:attribute name="symbol" type="xs:NCName" use="required">
												<xs:annotation>
													<xs:documentation>
																		The identifier for a uniform input parameter to the shader (a formal function parameter or in-scope 
																		global) that will be bound to an external resource.
																		</xs:documentation>
												</xs:annotation>
											</xs:attribute>
										</xs:complexType>
									</xs:element>
								</xs:sequence>
								<xs:attribute name="stage" type="fx_pipeline_stage_enum" use="required">
									<xs:annotation>
										<xs:documentation>
															In which pipeline stage this programmable shader is designed to execute, for example, VERTEX, FRAGMENT, etc.
															</xs:documentation>
									</xs:annotation>
								</xs:attribute>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="evaluate" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="color_target" type="fx_colortarget_type" minOccurs="0" maxOccurs="unbounded"/>
						<xs:element name="depth_target" type="fx_depthtarget_type" minOccurs="0" maxOccurs="unbounded"/>
						<xs:element name="stencil_target" type="fx_stenciltarget_type" minOccurs="0" maxOccurs="unbounded"/>
						<xs:element name="color_clear" type="fx_clearcolor_type" minOccurs="0" maxOccurs="unbounded"/>
						<xs:element name="depth_clear" type="fx_cleardepth_type" minOccurs="0" maxOccurs="unbounded"/>
						<xs:element name="stencil_clear" type="fx_clearstencil_type" minOccurs="0" maxOccurs="unbounded"/>
						<xs:element name="draw" type="fx_draw_type" minOccurs="0"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type" use="optional">
			<xs:annotation>
				<xs:documentation>
											The sid attribute is a text string value containing the sub-identifier of this element. 
											This value must be unique within the scope of the parent element. Optional attribute.
											</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="profile_cg_type">
		<xs:annotation>
			<xs:documentation>
			Opens a block of CG platform-specific data types and technique declarations.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0"/>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="code" type="fx_code_type"/>
				<xs:element name="include" type="fx_include_type"/>
			</xs:choice>
			<xs:element name="newparam" type="cg_newparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="technique" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						Holds a description of the textures, samplers, shaders, parameters, and passes necessary for rendering this effect using one method.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="asset" type="asset_type" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									The technique element may contain an asset element.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="annotate" type="fx_annotate_type" minOccurs="0" maxOccurs="unbounded"/>
						<xs:element name="pass" type="cg_pass_type" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									A static declaration of all the render states, shaders, and settings for one rendering pipeline.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
					<xs:attribute name="id" type="xs:ID">
						<xs:annotation>
							<xs:documentation>
								The id attribute is a text string containing the unique identifier of this element. 
								This value must be unique within the instance document. Optional attribute.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
					<xs:attribute name="sid" type="sid_type" use="required">
						<xs:annotation>
							<xs:documentation>
								The sid attribute is a text string value containing the sub-identifier of this element. 
								This value must be unique within the scope of the parent element. Optional attribute.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="optional">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="platform" type="xs:NCName" use="optional" default="PC">
			<xs:annotation>
				<xs:documentation>
					The type of platform. This is a vendor-defined character string that indicates the platform or capability target for the technique. Optional
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:simpleType name="gles_max_lights_index_type">
		<xs:restriction base="xs:nonNegativeInteger">
			<xs:minInclusive value="0"/>
			<xs:maxExclusive value="7"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gles_max_clip_planes_index_type">
		<xs:restriction base="xs:nonNegativeInteger">
			<xs:minInclusive value="0"/>
			<xs:maxExclusive value="5"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gles_max_texture_coords_index_type">
		<xs:restriction base="xs:nonNegativeInteger">
			<xs:minInclusive value="0"/>
			<xs:maxExclusive value="8"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gles_max_texture_image_units_index_type">
		<xs:restriction base="xs:nonNegativeInteger">
			<xs:minInclusive value="0"/>
			<xs:maxExclusive value="31"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gles_texenv_mode_enum">
		<xs:restriction base="xs:token">
			<xs:enumeration value="REPLACE">
				<xs:annotation>
					<xs:appinfo>value=0x1E01</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="MODULATE">
				<xs:annotation>
					<xs:appinfo>value=0x2100</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="DECAL">
				<xs:annotation>
					<xs:appinfo>value=0x2101</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="BLEND">
				<xs:annotation>
					<xs:appinfo>value=0x0BE2</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ADD">
				<xs:annotation>
					<xs:appinfo>value=0x0104</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="gles_texture_constant_type">
		<xs:attribute name="value" type="float4_type" use="optional"/>
		<xs:attribute name="param" type="xs:NCName" use="optional"/>
	</xs:complexType>
	<xs:complexType name="gles_texenv_command_type">
		<xs:sequence>
			<xs:element name="constant" type="gles_texture_constant_type" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="operator" type="gles_texenv_mode_enum"/>
		<xs:attribute name="sampler" type="xs:NCName"/>
	</xs:complexType>
	<xs:simpleType name="gles_texcombiner_operator_rgb_enum">
		<xs:restriction base="xs:token">
			<xs:enumeration value="REPLACE">
				<xs:annotation>
					<xs:appinfo>value=0x1E01</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="MODULATE">
				<xs:annotation>
					<xs:appinfo>value=0x2100</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ADD">
				<xs:annotation>
					<xs:appinfo>value=0x0104</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ADD_SIGNED">
				<xs:annotation>
					<xs:appinfo>value=0x8574</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="INTERPOLATE">
				<xs:annotation>
					<xs:appinfo>value=0x8575</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="SUBTRACT">
				<xs:annotation>
					<xs:appinfo>value=0x84E7</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="DOT3_RGB">
				<xs:annotation>
					<xs:appinfo>value=0x86AE</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="DOT3_RGBA">
				<xs:annotation>
					<xs:appinfo>value=0x86AF</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gles_texcombiner_operator_alpha_enum">
		<xs:restriction base="xs:token">
			<xs:enumeration value="REPLACE">
				<xs:annotation>
					<xs:appinfo>value=0x1E01</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="MODULATE">
				<xs:annotation>
					<xs:appinfo>value=0x2100</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ADD">
				<xs:annotation>
					<xs:appinfo>value=0x0104</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ADD_SIGNED">
				<xs:annotation>
					<xs:appinfo>value=0x8574</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="INTERPOLATE">
				<xs:annotation>
					<xs:appinfo>value=0x8575</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="SUBTRACT">
				<xs:annotation>
					<xs:appinfo>value=0x84E7</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gles_texcombiner_source_enum">
		<xs:restriction base="xs:token">
			<xs:enumeration value="TEXTURE">
				<xs:annotation>
					<xs:appinfo>value=0x1702</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="CONSTANT">
				<xs:annotation>
					<xs:appinfo>value=0x8576</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="PRIMARY">
				<xs:annotation>
					<xs:appinfo>value=0x8577</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="PREVIOUS">
				<xs:annotation>
					<xs:appinfo>value=0x8578</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gles_texcombiner_operand_rgb_enum">
		<xs:restriction base="gl_blend_enum">
			<xs:enumeration value="SRC_COLOR">
				<xs:annotation>
					<xs:appinfo>value=0x0300</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ONE_MINUS_SRC_COLOR">
				<xs:annotation>
					<xs:appinfo>value=0x0301</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="SRC_ALPHA">
				<xs:annotation>
					<xs:appinfo>value=0x0302</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ONE_MINUS_SRC_ALPHA">
				<xs:annotation>
					<xs:appinfo>value=0x0303</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gles_texcombiner_operand_alpha_enum">
		<xs:restriction base="gl_blend_enum">
			<xs:enumeration value="SRC_ALPHA">
				<xs:annotation>
					<xs:appinfo>value=0x0302</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ONE_MINUS_SRC_ALPHA">
				<xs:annotation>
					<xs:appinfo>value=0x0303</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gles_texcombiner_argument_index_type">
		<xs:restriction base="xs:nonNegativeInteger">
			<xs:minInclusive value="0"/>
			<xs:maxInclusive value="2"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="gles_texcombiner_argument_rgb_type">
		<xs:attribute name="source" type="gles_texcombiner_source_enum"/>
		<xs:attribute name="operand" type="gles_texcombiner_operand_rgb_enum" default="SRC_COLOR"/>
		<xs:attribute name="sampler" type="xs:NCName" use="optional"/>
	</xs:complexType>
	<xs:complexType name="gles_texcombiner_argument_alpha_type">
		<xs:attribute name="source" type="gles_texcombiner_source_enum"/>
		<xs:attribute name="operand" type="gles_texcombiner_operand_alpha_enum" default="SRC_ALPHA"/>
		<xs:attribute name="sampler" type="xs:NCName" use="optional"/>
	</xs:complexType>
	<xs:complexType name="gles_texcombiner_command_rgb_type">
		<xs:annotation>
			<xs:documentation>
			Defines the RGB portion of a texture_pipeline command. This is a combiner-mode texturing operation.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="argument" type="gles_texcombiner_argument_rgb_type" maxOccurs="3"/>
		</xs:sequence>
		<xs:attribute name="operator" type="gles_texcombiner_operator_rgb_enum"/>
		<xs:attribute name="scale" type="xs:float" use="optional"/>
	</xs:complexType>
	<xs:complexType name="gles_texcombiner_command_alpha_type">
		<xs:sequence>
			<xs:element name="argument" type="gles_texcombiner_argument_alpha_type" maxOccurs="3"/>
		</xs:sequence>
		<xs:attribute name="operator" type="gles_texcombiner_operator_alpha_enum"/>
		<xs:attribute name="scale" type="xs:float" use="optional"/>
	</xs:complexType>
	<xs:complexType name="gles_texcombiner_command_type">
		<xs:sequence>
			<xs:element name="constant" type="gles_texture_constant_type" minOccurs="0"/>
			<xs:element name="RGB" type="gles_texcombiner_command_rgb_type" minOccurs="0"/>
			<xs:element name="alpha" type="gles_texcombiner_command_alpha_type" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="gles_texture_pipeline_type">
		<xs:annotation>
			<xs:documentation>
			Defines a set of texturing commands that will be converted into multitexturing operations using glTexEnv in regular and combiner mode.
			</xs:documentation>
		</xs:annotation>
		<xs:choice maxOccurs="unbounded">
			<xs:element name="texcombiner" type="gles_texcombiner_command_type">
				<xs:annotation>
					<xs:documentation>
					Defines a texture_pipeline command. This is a combiner-mode texturing operation.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="texenv" type="gles_texenv_command_type">
				<xs:annotation>
					<xs:documentation>
					Defines a texture_pipeline command. It is a simple noncombiner mode of texturing operations.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type">
				<xs:annotation>
					<xs:documentation>
					The extra element may appear any number of times.
					OpenGL ES extensions may be used here.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:choice>
		<xs:attribute name="sid" type="sid_type">
			<xs:annotation>
				<xs:documentation>
				The sid attribute is a text string value containing the sub-identifier of this element. 
				This value must be unique within the scope of the parent element. Optional attribute.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:simpleType name="gles_sampler_wrap_enum">
		<xs:restriction base="xs:NMTOKEN">
			<xs:enumeration value="REPEAT"/>
			<xs:enumeration value="CLAMP"/>
			<xs:enumeration value="CLAMP_TO_EDGE"/>
			<xs:enumeration value="MIRRORED_REPEAT">
				<xs:annotation>
					<xs:documentation>
					supported by GLES 1.1 only
					</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:group name="gles_sampler_states_group">
		<xs:sequence>
			<xs:element name="wrap_s" type="gles_sampler_wrap_enum" default="REPEAT" minOccurs="0"/>
			<xs:element name="wrap_t" type="gles_sampler_wrap_enum" default="REPEAT" minOccurs="0"/>
			<xs:element name="minfilter" type="fx_sampler_min_filter_enum" default="LINEAR" minOccurs="0"/>
			<xs:element name="magfilter" type="fx_sampler_mag_filter_enum" default="LINEAR" minOccurs="0"/>
			<xs:element name="mipfilter" type="fx_sampler_mip_filter_enum" default="NEAREST" minOccurs="0"/>
			<xs:element name="mip_max_level" type="xs:unsignedByte" default="255" minOccurs="0"/>
			<xs:element name="mip_bias" type="xs:float" default="0.0" minOccurs="0"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
					The extra element may appear any number of times.
					OpenGL ES extensions may be used here.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:group>
	<xs:complexType name="gles_sampler_type">
		<xs:annotation>
			<xs:documentation>Sampling state that can be sharable between samplers because there is often heavy re-use</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="instance_image" type="instance_image_type" minOccurs="0"/>
			<xs:element name="texcoord" minOccurs="0">
				<xs:complexType>
					<xs:attribute name="semantic" type="xs:NCName"/>
				</xs:complexType>
			</xs:element>
			<xs:group ref="gles_sampler_states_group"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="gles_stencil_op_enum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="KEEP">
				<xs:annotation>
					<xs:appinfo>value=0x1E00</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="ZERO">
				<xs:annotation>
					<xs:appinfo>value=0x0</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="REPLACE">
				<xs:annotation>
					<xs:appinfo>value=0x1E01</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="INCR">
				<xs:annotation>
					<xs:appinfo>value=0x1E02</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="DECR">
				<xs:annotation>
					<xs:appinfo>value=0x1E03</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="INVERT">
				<xs:annotation>
					<xs:appinfo>value=0x150A</xs:appinfo>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="gles_enumeration_type">
		<xs:union memberTypes="gl_blend_enum gl_face_enum gl_func_enum gl_stencil_op_enum gl_material_enum gl_fog_enum gl_front_face_enum gl_light_model_color_control_enum gl_logic_op_enum gl_polygon_mode_enum gl_shade_model_enum"/>
	</xs:simpleType>
	<xs:group name="gles_pipeline_settings_group">
		<xs:annotation>
			<xs:documentation>
			A group that contains the renderstates available for the GLES profile.
			</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element name="alpha_func">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="func">
							<xs:complexType>
								<xs:attribute name="value" type="gl_func_enum" use="optional" default="ALWAYS"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="value">
							<xs:complexType>
								<xs:attribute name="value" type="gl_alpha_value_type" use="optional" default="0.0"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="blend_func">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="src">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_enum" use="optional" default="ONE"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="dest">
							<xs:complexType>
								<xs:attribute name="value" type="gl_blend_enum" use="optional" default="ZERO"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="clip_plane">
				<xs:complexType>
					<xs:attribute name="value" type="bool4_type" use="optional"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gles_max_clip_planes_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="color_mask">
				<xs:complexType>
					<xs:attribute name="value" type="bool4_type" use="optional"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="cull_face">
				<xs:complexType>
					<xs:attribute name="value" type="gl_face_enum" use="optional" default="BACK"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="depth_func">
				<xs:complexType>
					<xs:attribute name="value" type="gl_func_enum" use="optional" default="ALWAYS"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="depth_mask">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="depth_range">
				<xs:complexType>
					<xs:attribute name="value" type="float2_type" use="optional" default="0 1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="fog_color">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 0 0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="fog_density">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="fog_mode">
				<xs:complexType>
					<xs:attribute name="value" type="gl_fog_enum" use="optional" default="EXP"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="fog_start">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="fog_end">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="front_face">
				<xs:complexType>
					<xs:attribute name="value" type="gl_front_face_enum" use="optional" default="CCW"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="logic_op">
				<xs:complexType>
					<xs:attribute name="value" type="gl_logic_op_enum" use="optional" default="COPY"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_ambient">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 0 1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gles_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_diffuse">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 0 0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gles_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_specular">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 0 0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gles_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_position">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 1 0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gles_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_constant_attenuation">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gles_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_linear_attenuation">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gles_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_quadratic_attenuation">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gles_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_spot_cutoff">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="180"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gles_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_spot_direction">
				<xs:complexType>
					<xs:attribute name="value" type="float3_type" use="optional" default="0 0 -1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gles_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_spot_exponent">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gles_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_model_ambient">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0.2 0.2 0.2 1.0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="line_width">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="material_ambient">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0.2 0.2 0.2 1.0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="material_diffuse">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0.8 0.8 0.8 1.0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="material_emission">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 0 1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="material_shininess">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="material_specular">
				<xs:complexType>
					<xs:attribute name="value" type="float4_type" use="optional" default="0 0 0 1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="model_view_matrix">
				<xs:complexType>
					<xs:attribute name="value" type="float4x4_type" use="optional" default="1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="point_distance_attenuation">
				<xs:complexType>
					<xs:attribute name="value" type="float3_type" use="optional" default="1 0 0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="point_fade_threshold_size">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="point_size">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="point_size_min">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="point_size_max">
				<xs:complexType>
					<xs:attribute name="value" type="float_type" use="optional" default="1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="polygon_offset">
				<xs:complexType>
					<xs:attribute name="value" type="float2_type" use="optional" default="0 0"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="projection_matrix">
				<xs:complexType>
					<xs:attribute name="value" type="float4x4_type" use="optional" default="1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="scissor">
				<xs:complexType>
					<xs:attribute name="value" type="int4_type" use="optional"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="shade_model">
				<xs:complexType>
					<xs:attribute name="value" type="gl_shade_model_enum" use="optional" default="SMOOTH"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_func">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="func">
							<xs:complexType>
								<xs:attribute name="value" type="gl_func_enum" use="optional" default="ALWAYS"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="ref">
							<xs:complexType>
								<xs:attribute name="value" type="xs:unsignedByte" use="optional" default="0"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="mask">
							<xs:complexType>
								<xs:attribute name="value" type="xs:unsignedByte" use="optional" default="255"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_mask">
				<xs:complexType>
					<xs:attribute name="value" type="int_type" use="optional" default="4294967295"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_op">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="fail">
							<xs:complexType>
								<xs:attribute name="value" type="gles_stencil_op_enum" use="optional" default="KEEP"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="zfail">
							<xs:complexType>
								<xs:attribute name="value" type="gles_stencil_op_enum" use="optional" default="KEEP"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
						<xs:element name="zpass">
							<xs:complexType>
								<xs:attribute name="value" type="gles_stencil_op_enum" use="optional" default="KEEP"/>
								<xs:attribute name="param" type="xs:NCName" use="optional"/>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="texture_pipeline">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="value" type="gles_texture_pipeline_type" minOccurs="0"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="alpha_test_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="blend_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="clip_plane_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gles_max_clip_planes_index_type"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="color_logic_op_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="color_material_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="true"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="cull_face_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="depth_test_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="dither_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="fog_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
					<xs:attribute name="index" type="gles_max_lights_index_type" use="required"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="lighting_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="light_model_two_side_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="line_smooth_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="multisample_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="normalize_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="point_smooth_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="polygon_offset_fill_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="rescale_normal_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="sample_alpha_to_coverage_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="sample_alpha_to_one_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="sample_coverage_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="scissor_test_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="stencil_test_enable">
				<xs:complexType>
					<xs:attribute name="value" type="xs:boolean" use="optional" default="false"/>
					<xs:attribute name="param" type="xs:NCName" use="optional"/>
				</xs:complexType>
			</xs:element>
		</xs:choice>
	</xs:group>
	<xs:group name="gles_param_group">
		<xs:annotation>
			<xs:documentation>
			A group that defines the available variable types for GLES parameters.
			</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element name="bool" type="xs:boolean"/>
			<xs:element name="bool2" type="bool2_type"/>
			<xs:element name="bool3" type="bool3_type"/>
			<xs:element name="bool4" type="bool4_type"/>
			<xs:element name="int" type="int_type"/>
			<xs:element name="int2" type="int2_type"/>
			<xs:element name="int3" type="int3_type"/>
			<xs:element name="int4" type="int4_type"/>
			<xs:element name="float" type="float_type"/>
			<xs:element name="float2" type="float2_type"/>
			<xs:element name="float3" type="float3_type"/>
			<xs:element name="float4" type="float4_type"/>
			<xs:element name="float1x1" type="float_type"/>
			<xs:element name="float1x2" type="float2_type"/>
			<xs:element name="float1x3" type="float3_type"/>
			<xs:element name="float1x4" type="float4_type"/>
			<xs:element name="float2x1" type="float2_type"/>
			<xs:element name="float2x2" type="float2x2_type"/>
			<xs:element name="float2x3" type="float2x3_type"/>
			<xs:element name="float2x4" type="float2x4_type"/>
			<xs:element name="float3x1" type="float3_type"/>
			<xs:element name="float3x2" type="float3x2_type"/>
			<xs:element name="float3x3" type="float3x3_type"/>
			<xs:element name="float3x4" type="float3x4_type"/>
			<xs:element name="float4x1" type="float4_type"/>
			<xs:element name="float4x2" type="float4x2_type"/>
			<xs:element name="float4x3" type="float4x3_type"/>
			<xs:element name="float4x4" type="float4x4_type"/>
			<xs:element name="sampler2D" type="gles_sampler_type"/>
			<xs:element name="enum" type="gles_enumeration_type"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="gles_newparam_type">
		<xs:annotation>
			<xs:documentation>
			Create a new, named param object in the GLES Runtime, assign it a type, an initial value, and additional attributes at declaration time.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="annotate" type="fx_annotate_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
					The annotate element allows you to specify an annotation for this new param.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="semantic" type="xs:NCName" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
					The semantic element allows you to specify a semantic for this new param.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="modifier" type="fx_modifier_enum" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
					The modifier element allows you to specify a modifier for this new param.
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:group ref="gles_param_group"/>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type" use="required">
			<xs:annotation>
				<xs:documentation>
				The sid attribute is a text string value containing the sub-identifier of this element. 
				This value must be unique within the scope of the parent element.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="profile_gles_type">
		<xs:annotation>
			<xs:documentation>
			Opens a block of GLES platform-specific data types and technique declarations.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0"/>
			<xs:element name="newparam" type="gles_newparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="technique" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						Holds a description of the textures, samplers, shaders, parameters, and passes necessary for rendering this effect using one method.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="asset" type="asset_type" minOccurs="0"/>
						<xs:element name="annotate" type="fx_annotate_type" minOccurs="0" maxOccurs="unbounded"/>
						<xs:element name="pass" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									A static declaration of all the render states, shaders, and settings for one rendering pipeline.
									</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="annotate" type="fx_annotate_type" minOccurs="0" maxOccurs="unbounded"/>
									<xs:element name="states" minOccurs="0">
										<xs:complexType>
											<xs:sequence>
												<xs:group ref="gles_pipeline_settings_group" minOccurs="0" maxOccurs="unbounded"/>
											</xs:sequence>
										</xs:complexType>
									</xs:element>
									<xs:element name="evaluate" minOccurs="0">
										<xs:complexType>
											<xs:sequence>
												<xs:element name="color_target" type="fx_colortarget_type" minOccurs="0" maxOccurs="unbounded"/>
												<xs:element name="depth_target" type="fx_depthtarget_type" minOccurs="0" maxOccurs="unbounded"/>
												<xs:element name="stencil_target" type="fx_stenciltarget_type" minOccurs="0" maxOccurs="unbounded"/>
												<xs:element name="color_clear" type="fx_clearcolor_type" minOccurs="0" maxOccurs="unbounded"/>
												<xs:element name="depth_clear" type="fx_cleardepth_type" minOccurs="0" maxOccurs="unbounded"/>
												<xs:element name="stencil_clear" type="fx_clearstencil_type" minOccurs="0" maxOccurs="unbounded"/>
												<xs:element name="draw" type="fx_draw_type" minOccurs="0"/>
											</xs:sequence>
										</xs:complexType>
									</xs:element>
									<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
								</xs:sequence>
								<xs:attribute name="sid" type="sid_type" use="optional">
									<xs:annotation>
										<xs:documentation>
											The sid attribute is a text string value containing the sub-identifier of this element. 
											This value must be unique within the scope of the parent element. Optional attribute.
											</xs:documentation>
									</xs:annotation>
								</xs:attribute>
							</xs:complexType>
						</xs:element>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
					<xs:attribute name="id" type="xs:ID"/>
					<xs:attribute name="sid" type="sid_type" use="required">
						<xs:annotation>
							<xs:documentation>
								The sid attribute is a text string value containing the sub-identifier of this element. 
								This value must be unique within the scope of the parent element.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="optional">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="platform" type="xs:NCName" use="optional" default="PC">
			<xs:annotation>
				<xs:documentation>
					The type of platform. This is a vendor-defined character string that indicates the platform or capability target for the technique. Optional
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:group name="fx_profile_group">
		<xs:annotation>
			<xs:documentation>
			A group that  specifies the allowable COLLADA FX profiles.
			</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:element name="profile_COMMON" type="profile_common_type"/>
			<xs:element name="profile_BRIDGE" type="profile_bridge_type"/>
			<xs:element name="profile_GLES2" type="profile_gles2_type"/>
			<xs:element name="profile_GLSL" type="profile_glsl_type"/>
			<xs:element name="profile_CG" type="profile_cg_type"/>
			<xs:element name="profile_GLES" type="profile_gles_type"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="effect_type">
		<xs:annotation>
			<xs:documentation>
			A self contained description of a shader effect.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The effect element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="annotate" type="fx_annotate_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The annotate element allows you to specify an annotation on this effect.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="newparam" type="fx_newparam_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The newparam element allows you to create new effect parameters which can be shared by multipe profiles.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:group ref="fx_profile_group" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="required">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="library_effects_type">
		<xs:annotation>
			<xs:documentation>
			The library_effects element declares a module of effect elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The library_effects element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="effect" type="effect_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There must be at least one effect element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="box_type">
		<xs:annotation>
			<xs:documentation>
			An axis-aligned, centered box primitive.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="half_extents" type="float3_type">
				<xs:annotation>
					<xs:documentation>
						3 float values that represent the extents of the box
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="plane_type">
		<xs:annotation>
			<xs:documentation>
			An infinite plane primitive.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="equation" type="float4_type">
				<xs:annotation>
					<xs:documentation>
						4 float values that represent the coefficients for the plane's equation:    Ax + By + Cz + D = 0
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="sphere_type">
		<xs:annotation>
			<xs:documentation>
			A centered sphere primitive.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="radius" type="float_type">
				<xs:annotation>
					<xs:documentation>
						A float value that represents the radius of the sphere
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ellipsoid_type">
		<xs:sequence>
			<xs:element name="size" type="float3_type"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="cylinder_type">
		<xs:annotation>
			<xs:documentation>
			A cylinder primitive that is centered on, and aligned with. the local Y axis.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="height" type="float_type">
				<xs:annotation>
					<xs:documentation>
						A float value that represents the length of the cylinder along the Y axis.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="radius" type="float2_type">
				<xs:annotation>
					<xs:documentation>
						float2 values that represent the radii of the cylinder.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="capsule_type">
		<xs:annotation>
			<xs:documentation>
			A capsule primitive that is centered on and aligned with the local Y axis.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="height" type="float_type">
				<xs:annotation>
					<xs:documentation>
						A float value that represents the length of the line segment connecting the centers 
						of the capping hemispheres.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="radius" type="float3_type">
				<xs:annotation>
					<xs:documentation>
						Three float values that represent the radii of the capsule (it may be elliptical).
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="force_field_type">
		<xs:annotation>
			<xs:documentation>
			A general container for force-fields. At the moment, it only has techniques and extra elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The force_field element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="technique" type="technique_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						This element must contain at least one non-common profile technique.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. This value 
					must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="library_force_fields_type">
		<xs:annotation>
			<xs:documentation>
			The library_force_fields element declares a module of force_field elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The library_force_fields element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="force_field" type="force_field_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There must be at least one force_field element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="physics_material_type">
		<xs:annotation>
			<xs:documentation>
			This element defines the physical properties of an object. It contains a technique/profile with 
			parameters. The COMMON profile defines the built-in names, such as static_friction.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The physics_material element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="technique_common">
				<xs:annotation>
					<xs:documentation>
						The technique_common element specifies the physics_material information for the common profile 
						which all COLLADA implementations need to support.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="dynamic_friction" type="targetable_float_type" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									Dynamic friction coefficient
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="restitution" type="targetable_float_type" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									The proportion of the kinetic energy preserved in the impact (typically ranges from 0.0 to 1.0)
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="static_friction" type="targetable_float_type" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									Static friction coefficient
									</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="technique" type="technique_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						This element may contain any number of non-common profile techniques.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="library_physics_materials_type">
		<xs:annotation>
			<xs:documentation>
			The library_physics_materials element declares a module of physics_material elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The library_physics_materials element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="physics_material" type="physics_material_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There must be at least one physics_material element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:simpleType name="spring_enum">
		<xs:restriction base="xs:NMTOKEN">
			<xs:enumeration value="LINEAR"/>
			<xs:enumeration value="ANGULAR"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="common_profile_input_enum">
		<xs:annotation>
			<xs:appinfo>constant-strings</xs:appinfo>
		</xs:annotation>
		<xs:restriction base="xs:NMTOKEN">
			<xs:enumeration value="BINORMAL"/>
			<xs:enumeration value="COLOR"/>
			<xs:enumeration value="CONTINUITY"/>
			<xs:enumeration value="IMAGE"/>
			<xs:enumeration value="IN_TANGENT"/>
			<xs:enumeration value="INPUT"/>
			<xs:enumeration value="INTERPOLATION"/>
			<xs:enumeration value="INV_BIND_MATRIX"/>
			<xs:enumeration value="JOINT"/>
			<xs:enumeration value="LINEAR_STEPS"/>
			<xs:enumeration value="MORPH_TARGET"/>
			<xs:enumeration value="MORPH_WEIGHT"/>
			<xs:enumeration value="NORMAL"/>
			<xs:enumeration value="OUTPUT"/>
			<xs:enumeration value="OUT_TANGENT"/>
			<xs:enumeration value="POSITION"/>
			<xs:enumeration value="TANGENT"/>
			<xs:enumeration value="TEXBINORMAL"/>
			<xs:enumeration value="TEXCOORD"/>
			<xs:enumeration value="TEXTANGENT"/>
			<xs:enumeration value="UV"/>
			<xs:enumeration value="VERTEX"/>
			<xs:enumeration value="WEIGHT"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="common_profile_param_enum">
		<xs:annotation>
			<xs:appinfo>constant-strings</xs:appinfo>
		</xs:annotation>
		<xs:restriction base="xs:NMTOKEN">
			<xs:enumeration value="A"/>
			<xs:enumeration value="ANGLE"/>
			<xs:enumeration value="B"/>
			<xs:enumeration value="DOUBLE_SIDED"/>
			<xs:enumeration value="G"/>
			<xs:enumeration value="P"/>
			<xs:enumeration value="Q"/>
			<xs:enumeration value="R"/>
			<xs:enumeration value="S"/>
			<xs:enumeration value="T"/>
			<xs:enumeration value="TIME"/>
			<xs:enumeration value="U"/>
			<xs:enumeration value="V"/>
			<xs:enumeration value="W"/>
			<xs:enumeration value="X"/>
			<xs:enumeration value="Y"/>
			<xs:enumeration value="Z"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="edges_type">
		<xs:annotation>
			<xs:documentation>     This element defines all the edges used in the brep     structure.    </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="input" type="input_local_offset_type" minOccurs="4" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
							Five input elements are needed to define an
							edge, one for referencing the curve, two for
							referencing the two vertices, one for the
							orientation of the first vertex (the second
							is the opposite of the first) and one for
							the parametric values of the curve.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="p" type="p_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>        The indices for refrencing curves and        vertices.       </xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="required"/>
		<xs:attribute name="name" type="xs:token"/>
		<xs:attribute name="count" type="xs:int" use="required"/>
	</xs:complexType>
	<xs:complexType name="wires_type">
		<xs:annotation>
			<xs:documentation>     This element defines all the wires used in the brep     structure.    </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="input" type="input_local_offset_type" minOccurs="2" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
							One input elements is needed to define a
							wire by its edges. The second is needed for
							orientation of the edges
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="vcount" type="list_of_uints_type"/>
			<xs:element name="p" type="p_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
							The indices of the edges for each wire.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="required"/>
		<xs:attribute name="name" type="xs:token"/>
		<xs:attribute name="count" type="uint_type" use="required"/>
	</xs:complexType>
	<xs:complexType name="faces_type">
		<xs:annotation>
			<xs:documentation>     This element defines all the faces used in the brep     structure.    </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="input" type="input_local_offset_type" minOccurs="3" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
							Two input elements are needed to define a
							face, one for referencing the surface and
							one for referencing the wires themselfs. The
							third is needed for the orientation of each
							wires.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="vcount" type="list_of_uints_type"/>
			<xs:element name="p" type="p_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
							The indices for referencing the surface and
							wires for each face.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="required"/>
		<xs:attribute name="name" type="xs:token"/>
		<xs:attribute name="count" type="uint_type" use="required"/>
	</xs:complexType>
	<xs:complexType name="shells_type">
		<xs:annotation>
			<xs:documentation>     This element defines all the shells used in the brep     structure.    </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="input" type="input_local_offset_type" minOccurs="2" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
							One input elements is needed to define a
							shell by its faces. The second is need for
							the orientation of the faces
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="vcount" type="list_of_uints_type"/>
			<xs:element name="p" type="p_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
							The indices of the faces for each shell.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="required"/>
		<xs:attribute name="name" type="xs:token"/>
		<xs:attribute name="count" type="uint_type" use="required"/>
	</xs:complexType>
	<xs:complexType name="solids_type">
		<xs:annotation>
			<xs:documentation>     This element defines all the solids used in the brep     structure.    </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="input" type="input_local_offset_type" minOccurs="2" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
							One input elements is needed to define a
							solid by its shells. The second is need fo
							the orientation of the shells.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="vcount" type="list_of_uints_type"/>
			<xs:element name="p" type="p_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
							The indices of the shells for each solid.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="required"/>
		<xs:attribute name="name" type="xs:token"/>
		<xs:attribute name="count" type="uint_type" use="required"/>
	</xs:complexType>
	<xs:complexType name="line_type">
		<xs:annotation>
			<xs:documentation>     Describes an infinite line. A line is defined and     positioned in space with an axis which gives it an     origin and a unit vector. The Geom_Line line is     parameterized: P (U) = O + U*Dir, where: - P is the     point of parameter U, - O is the origin and Dir the unit     vector of its positioning axis. The parameter range is ]     -infinite, +infinite [. The orientation of the line is     given by the unit vector of its positioning axis.    </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="origin" type="float3_type"/>
			<xs:element name="direction" type="float3_type"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="circle_type">
		<xs:annotation>
			<xs:documentation>     Describes a circle. A circle is defined by its radius     and, as with any conic curve, is positioned in space     with a right-handed coordinate system where: - the     origin is the center of the circle, and - the origin, "X     Direction" and "Y Direction" define the plane of the     circle. This coordinate system is the local coordinate     system of the circle. The "main Direction" of this     coordinate system is the vector normal to the plane of     the circle. The axis, of which the origin and unit     vector are respectively the origin and "main Direction"     of the local coordinate system, is termed the "Axis" or     "main Axis" of the circle. The "main Direction" of the     local coordinate system gives an explicit orientation to     the circle (definition of the trigonometric sense),     determining the direction in which the parameter     increases along the circle. The Geom_Circle circle is     parameterized by an angle: P(U) = O + R*Cos(U)*XDir +     R*Sin(U)*YDir, where: - P is the point of parameter U, -     O, XDir and YDir are respectively the origin, "X     Direction" and "Y Direction" of its local coordinate     system, - R is the radius of the circle. The "X     Axis" of the local coordinate system therefore     defines the origin of the parameter of the circle.     The parameter is the angle with this "X Direction".     A circle is a closed and periodic curve. The period     is 2.*Pi and the parameter range is [ 0, 2.*Pi [.    </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="radius" type="float_type"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ellipse_type">
		<xs:annotation>
			<xs:documentation>     Describes an ellipse in 3D space. An ellipse is defined     by its major and minor radii and, as with any conic     curve, is positioned in space with a right-handed     coordinate system where: - the origin is the center of     the ellipse, - the "X Direction" defines the     major axis, and - the "Y Direction" defines     the minor axis. The origin, "X Direction" and     "Y Direction" of this coordinate system define     the plane of the ellipse. The coordinate system is the     local coordinate system of the ellipse. The "main     Direction" of this coordinate system is the vector     normal to the plane of the ellipse. The axis, of which     the origin and unit vector are respectively the origin     and "main Direction" of the local coordinate     system, is termed the "Axis" or "main     Axis" of the ellipse. The "main     Direction" of the local coordinate system gives an     explicit orientation to the ellipse (definition of the     trigonometric sense), determining the direction in which     the parameter increases along the ellipse. The     Geom_Ellipse ellipse is parameterized by an angle: P(U)     = O + MajorRad*Cos(U)*XDir + MinorRad*Sin(U)*YDir where:     - P is the point of parameter U, - O, XDir and YDir are     respectively the origin, "X &lt;br&gt;     Direction" and "Y Direction" of its local     coordinate system, - MajorRad and MinorRad are the major     and minor radii of the ellipse. The "X Axis"     of the local coordinate system therefore defines the     origin of the parameter of the ellipse. An ellipse is a     closed and periodic curve. The period is 2.*Pi and the     parameter range is [ 0, 2.*Pi [.    </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="radius" type="float2_type"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="parabola_type">
		<xs:annotation>
			<xs:documentation>     Describes a parabola in 3D space. A parabola is defined     by its focal length (i.e. the distance between its focus     and its apex) and is positioned in space with a     coordinate system where: - the origin is     the apex of the parabola, - the "X Axis"     defines the axis of symmetry; the parabola is on the     positive side of this axis, - the origin, "X     Direction" and "Y Direction" define the     plane of the parabola. This coordinate system is the     local coordinate system of the parabola. The "main     Direction" of this coordinate system is a vector     normal to the plane of the parabola. The axis, of which     the origin and unit vector are respectively the origin     and "main Direction" of the local coordinate     system, is termed the "Axis" or "main     Axis" of the parabola. The "main     Direction" of the local coordinate system gives an     explicit orientation to the parabola, determining the     direction in which the parameter increases along the     parabola. The Geom_Parabola parabola is parameterized as     follows: P(U) = O + U*U/(4.*F)*XDir + U*YDir where: - P     is the point of parameter U, - O, XDir and YDir are     respectively the origin, "X &lt;br&gt;     Direction" and "Y Direction" of its local     coordinate system, - F is the focal length of the     parabola. The parameter of the parabola is therefore its     Y coordinate in the local coordinate system, with the     "X &lt;br&gt; Axis" of the local coordinate     system defining the origin of the parameter. The     parameter range is ] -infinite, +infinite [.    </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="focal" type="float_type"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="hyperbola_type">
		<xs:annotation>
			<xs:documentation>     Describes a branch of a hyperbola in 3D space. A     hyperbola is defined by its major and minor radii and,     as with any conic curve, is positioned in space with a     right-handed coordinate system where: - the origin is     the center of the hyperbola, - the "X Direction" defines     the major axis, and - the "Y Direction" defines the     minor axis. The origin, "X Direction" and "Y Direction"     of this coordinate system define the plane of the     hyperbola. The coordinate system is the local coordinate     system of the hyperbola. The branch of the hyperbola     described is the one located on the positive side of the     major axis. The "main Direction" of the local coordinate     system is a vector normal to the plane of the hyperbola.     The axis, of which the origin and unit vector are     respectively the origin and "main Direction" of the     local coordinate system, is termed the "Axis" or "main     Axis" of the hyperbola. The "main Direction" of the     local coordinate system gives an explicit orientation to     the hyperbola, determining the direction in which the     parameter increases along the hyperbola. The     Geom_Hyperbola hyperbola is parameterized as follows:     P(U) = O + MajRad*Cosh(U)*XDir + MinRad*Sinh(U)*YDir,     where: - P is the point of parameter U, - O, XDir and     YDir are respectively the origin, "X Direction" and "Y     Direction" of its local coordinate system, - MajRad and     MinRad are the major and minor radii of the hyperbola.     The "X Axis" of the local coordinate system therefore     defines the origin of the parameter of the hyperbola.     The parameter range is ] -infinite, +infinite [.    </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="radius" type="float2_type"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="torus_type">
		<xs:sequence>
			<xs:element name="radius" type="float2_type"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="pcurves_type">
		<xs:sequence>
			<xs:element name="input" type="input_local_offset_type" minOccurs="3" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
    						The first two inputs are needed to reference
    						the edge-face-connection. The third input
    						references the pcurve.
    					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="vcount" type="list_of_uints_type"/>
			<xs:element name="p" type="p_type" minOccurs="0"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="required"/>
		<xs:attribute name="name" type="xs:token" use="optional"/>
		<xs:attribute name="count" type="uint_type" use="required"/>
	</xs:complexType>
	<xs:complexType name="sidref_array_type">
		<xs:annotation>
			<xs:documentation>
			The SIDREF_array element declares the storage for a homogenous array of SID reference values.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:extension base="list_of_sidrefs_type">
				<xs:attribute name="id" type="xs:ID">
					<xs:annotation>
						<xs:documentation>
								The id attribute is a text string
								containing the unique identifier of this
								element. This value must be unique
								within the instance document. Optional
								attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="name" type="xs:token">
					<xs:annotation>
						<xs:documentation>
								The name attribute is the text string
								name of this element. Optional
								attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="count" type="uint_type" use="required">
					<xs:annotation>
						<xs:documentation>

								The count attribute indicates the number
								of values in the array. Required
								attribute.
							</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="source_type">
		<xs:annotation>
			<xs:documentation>
			The source element declares a data repository that provides values according to the semantics of an 
			input element that refers to it.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The source element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:choice minOccurs="0">
				<xs:element name="token_array" type="token_array_type">
					<xs:annotation>
						<xs:documentation>
							The source element may contain a token_array.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="IDREF_array" type="idref_array_type">
					<xs:annotation>
						<xs:documentation>
								The source element may contain an
								IDREF_array.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="Name_array" type="name_array_type">
					<xs:annotation>
						<xs:documentation>
								The source element may contain a
								Name_array.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="bool_array" type="bool_array_type">
					<xs:annotation>
						<xs:documentation>
								The source element may contain a
								bool_array.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="float_array" type="float_array_type">
					<xs:annotation>
						<xs:documentation>
								The source element may contain a
								float_array.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="int_array" type="int_array_type">
					<xs:annotation>
						<xs:documentation>
								The source element may contain an
								int_array.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="SIDREF_array" type="sidref_array_type"/>
			</xs:choice>
			<xs:element name="technique_common" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The technique common specifies the common method for accessing this source element's data.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="accessor" type="accessor_type">
							<xs:annotation>
								<xs:documentation>
									The source's technique_common must have one and only one accessor.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="technique" type="technique_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						This element may contain any number of non-common profile techniques.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="required">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="animation_type">
		<xs:annotation>
			<xs:documentation>
			The animation element categorizes the declaration of animation information. The animation 
			hierarchy contains elements that describe the animation's key-frame data and sampler functions, 
			ordered in such a way to group together animations that should be executed together.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The animation element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:choice>
				<xs:sequence>
					<xs:element name="source" type="source_type" maxOccurs="unbounded">
						<xs:annotation>
							<xs:documentation>
								The animation element may contain any number of source elements.
								</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:choice>
						<xs:sequence>
							<xs:element name="sampler" type="sampler_type" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>
										The animation element may contain any number of sampler elements.
										</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="channel" type="channel_type" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>
										The animation element may contain any number of channel elements.
										</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="animation" type="animation_type" minOccurs="0" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>
										The animation may be hierarchical and may contain any number of other animation elements.
										</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
						<xs:element name="animation" type="animation_type" maxOccurs="unbounded"/>
					</xs:choice>
				</xs:sequence>
				<xs:sequence>
					<xs:element name="sampler" type="sampler_type" maxOccurs="unbounded"/>
					<xs:element name="channel" type="channel_type" maxOccurs="unbounded"/>
					<xs:element name="animation" type="animation_type" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
				<xs:element name="animation" type="animation_type" maxOccurs="unbounded"/>
			</xs:choice>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. This value 
					must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="library_animations_type">
		<xs:annotation>
			<xs:documentation>
			The library_animations element declares a module of animation elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The library_animations element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="animation" type="animation_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There must be at least one animation element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="skin_type">
		<xs:annotation>
			<xs:documentation>
			The skin element contains vertex and primitive information sufficient to describe blend-weight skinning.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="bind_shape_matrix" type="float4x4_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						This provides extra information about the position and orientation of the base mesh before binding. 
						If bind_shape_matrix is not specified then an identity matrix may be used as the bind_shape_matrix.
						The bind_shape_matrix element may occur zero or one times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="source" type="source_type" minOccurs="3" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The skin element must contain at least three source elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="joints">
				<xs:annotation>
					<xs:documentation>
						The joints element associates joint, or skeleton, nodes with attribute data.  
						In COLLADA, this is specified by the inverse bind matrix of each joint (influence) in the skeleton.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="input" type="input_local_type" minOccurs="2" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									The input element must occur at least twice. These inputs are local inputs.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									The extra element may appear any number of times.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="vertex_weights">
				<xs:annotation>
					<xs:documentation>
						The vertex_weights element associates a set of joint-weight pairs with each vertex in the base mesh.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="input" type="input_local_offset_type" minOccurs="2" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									The input element must occur at least twice.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="vcount" type="list_of_uints_type" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									The vcount element contains a list of integers describing the number of influences for each vertex.
									The vcount element may occur once.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="v" type="list_of_ints_type" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									The v element describes which bones and attributes are associated with each vertex.  An index 
									of -1 into the array of joints refers to the bind shape.  Weights should be normalized before use.
									The v element must occur zero or one times.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									The extra element may appear any number of times.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
					<xs:attribute name="count" type="uint_type" use="required">
						<xs:annotation>
							<xs:documentation>
								The count attribute describes the number of vertices in the base mesh. Required element. 
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="source" type="xs:anyURI" use="required">
			<xs:annotation>
				<xs:documentation>
					The source attribute contains a URI reference to the base mesh, (a static mesh or a morphed mesh).
					This also provides the bind-shape of the skinned mesh.  Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="convex_mesh_type">
		<xs:annotation>
			<xs:documentation>
			The definition of the convex_mesh element is identical to the mesh element with the exception that 
			instead of a complete description (source, vertices, polygons etc.), it may simply point to another 
			geometry to derive its shape. The latter case means that the convex hull of that geometry should 
			be computed and is indicated by the optional "convex_hull_of" attribute.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence minOccurs="0">
			<xs:element name="source" type="source_type" maxOccurs="unbounded"/>
			<xs:element name="vertices" type="vertices_type"/>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="lines" type="lines_type"/>
				<xs:element name="linestrips" type="linestrips_type"/>
				<xs:element name="polygons" type="polygons_type"/>
				<xs:element name="polylist" type="polylist_type"/>
				<xs:element name="triangles" type="triangles_type"/>
				<xs:element name="trifans" type="trifans_type"/>
				<xs:element name="tristrips" type="tristrips_type"/>
			</xs:choice>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="convex_hull_of" type="xs:anyURI">
			<xs:annotation>
				<xs:documentation>
					The convex_hull_of attribute is a URI string of geometry to compute the convex hull of. 
					Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="mesh_type">
		<xs:annotation>
			<xs:documentation>
			The mesh element contains vertex and primitive information sufficient to describe basic geometric meshes.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="source" type="source_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The mesh element must contain one or more source elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="vertices" type="vertices_type">
				<xs:annotation>
					<xs:documentation>
						The mesh element must contain one vertices element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="lines" type="lines_type">
					<xs:annotation>
						<xs:documentation>
							The mesh element may contain any number of lines elements.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="linestrips" type="linestrips_type">
					<xs:annotation>
						<xs:documentation>
							The mesh element may contain any number of linestrips elements.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="polygons" type="polygons_type">
					<xs:annotation>
						<xs:documentation>
							The mesh element may contain any number of polygons elements.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="polylist" type="polylist_type">
					<xs:annotation>
						<xs:documentation>
							The mesh element may contain any number of polylist elements.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="triangles" type="triangles_type">
					<xs:annotation>
						<xs:documentation>
							The mesh element may contain any number of triangles elements.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="trifans" type="trifans_type">
					<xs:annotation>
						<xs:documentation>
							The mesh element may contain any number of trifans elements.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="tristrips" type="tristrips_type">
					<xs:annotation>
						<xs:documentation>
							The mesh element may contain any number of tristrips elements.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:choice>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="spline_type">
		<xs:annotation>
			<xs:documentation>
			The spline element contains control vertex information sufficient to describe basic splines.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="source" type="source_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The mesh element must contain one or more source elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="control_vertices">
				<xs:annotation>
					<xs:documentation>The control vertices element  must occur  exactly one time. It is used to describe the CVs of the spline.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="input" type="input_local_type" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
						The input element must occur at least one time. These inputs are local inputs.
						</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="closed" type="xs:boolean" default="false"/>
	</xs:complexType>
	<xs:complexType name="nurbs_surface_type">
		<xs:sequence>
			<xs:element name="source" type="source_type" maxOccurs="unbounded"/>
			<xs:element name="control_vertices">
				<xs:annotation>
					<xs:documentation>
							The control vertices element must occur
							exactly one time. It is used to describe the
							CVs of the spline.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="input" type="input_local_type" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
										The input element must occur at
										least one time. These inputs are
										local inputs.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
										The extra element may appear any
										number of times.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="degree_u" type="uint_type" use="required"/>
		<xs:attribute name="closed_u" type="xs:boolean" default="false"/>
		<xs:attribute name="degree_v" type="uint_type" use="required"/>
		<xs:attribute name="closed_v" type="xs:boolean" default="false"/>
	</xs:complexType>
	<xs:complexType name="nurbs_type">
		<xs:sequence>
			<xs:element name="source" type="source_type" maxOccurs="unbounded"/>
			<xs:element name="control_vertices">
				<xs:annotation>
					<xs:documentation>The control vertices element  must occur  exactly one time. It is used to describe the CVs of the spline.</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="input" type="input_local_type" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
						The input element must occur at least one time. These inputs are local inputs.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
						The extra element may appear any number of times.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="degree" type="uint_type" use="required"/>
		<xs:attribute name="closed" type="xs:boolean" default="false"/>
	</xs:complexType>
	<xs:complexType name="morph_type">
		<xs:annotation>
			<xs:documentation>
			The morph element describes the data required to blend between sets of static meshes. Each 
			possible mesh that can be blended (a morph target) must be specified.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="source" type="source_type" minOccurs="2" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The morph element must contain at least two source elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="targets">
				<xs:annotation>
					<xs:documentation>
						The targets element declares the morph targets, their weights and any user defined attributes 
						associated with them.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="input" type="input_local_type" minOccurs="2" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									The input element must occur at least twice. These inputs are local inputs.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									The extra element may appear any number of times.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="method" type="morph_method_enum" default="NORMALIZED">
			<xs:annotation>
				<xs:documentation>
					The method attribute specifies the which blending technique to use. The accepted values are 
					NORMALIZED, and RELATIVE. The default value if not specified is NORMALIZED.  Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="source" type="xs:anyURI" use="required">
			<xs:annotation>
				<xs:documentation>
					The source attribute indicates the base mesh. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="controller_type">
		<xs:annotation>
			<xs:documentation>
			The controller element categorizes the declaration of generic control information.
			A controller is a device or mechanism that manages and directs the operations of another object.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The controller element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:choice>
				<xs:element name="skin" type="skin_type">
					<xs:annotation>
						<xs:documentation>
							The controller element may contain either a skin element or a morph element.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="morph" type="morph_type">
					<xs:annotation>
						<xs:documentation>
							The controller element may contain either a skin element or a morph element.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:choice>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. This value 
					must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="library_controllers_type">
		<xs:annotation>
			<xs:documentation>
			The library_controllers element declares a module of controller elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The library_controllers element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="controller" type="controller_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There must be at least one controller element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="origin_type">
		<xs:simpleContent>
			<xs:extension base="float3_type"/>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="orient_type">
		<xs:simpleContent>
			<xs:extension base="float4_type"/>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="curve_type">
		<xs:annotation>
			<xs:documentation>     A curveType defines the attributes of a curve element.     With rotate and translate the surface can be positioned     to its right location.    </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:choice>
				<xs:element name="line" type="line_type"/>
				<xs:element name="circle" type="circle_type"/>
				<xs:element name="ellipse" type="ellipse_type"/>
				<xs:element name="parabola" type="parabola_type"/>
				<xs:element name="hyperbola" type="hyperbola_type"/>
				<xs:element name="nurbs" type="nurbs_type"/>
			</xs:choice>
			<xs:element name="orient" type="orient_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="origin" type="origin_type" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type" use="optional">
			<xs:annotation>
				<xs:documentation>The id of a curve.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token" use="optional">
			<xs:annotation>
				<xs:documentation>      The name of a curve.     </xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="surface_curves_type">
		<xs:annotation>
			<xs:documentation>
				This element holds all the pcurves that are needed for
				the geometrical description of the topological entities
				edges on the surfaces they lie on.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="curve" type="curve_type" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="curves_type">
		<xs:annotation>
			<xs:documentation>
				This element holds all the curves that are needed for
				the geometrical description of the topological entities
				edges.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="curve" type="curve_type" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="swept_surface_type">
		<xs:annotation>
			<xs:documentation>     Describes a surface of linear extrusion ("extruded     surface"), e.g. a generalized cylinder. Such a surface     is obtained by sweeping a curve (called the "extruded     curve" or "basis") in a given direction (referred to as     the "direction of extrusion" and defined by a unit     vector). The u parameter is along the extruded curve.     The v parameter is along the direction of extrusion. The     parameter range for the u parameter is defined by the     reference curve. The parameter range for the v parameter     is ] - infinity, + infinity [. The position of the curve     gives the origin of the v parameter. The form of a     surface of linear extrusion is generally a ruled     surface. It can be: - a cylindrical surface, if the     extruded curve is a circle, or a trimmed circle, with an     axis parallel to the direction of extrusion, or - a     planar surface, if the extruded curve is a line.    </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="curve" type="curve_type"/>
			<xs:choice>
				<xs:element name="direction" type="float3_type"/>
				<xs:sequence>
					<xs:element name="origin" type="float3_type"/>
					<xs:element name="axis" type="float3_type"/>
				</xs:sequence>
			</xs:choice>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="cone_type">
		<xs:sequence>
			<xs:element name="radius" type="float_type"/>
			<xs:element name="angle" type="xs:float"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="surface_type">
		<xs:annotation>
			<xs:documentation>     A surfaceType defines the attributes of a surface     element. With rotate and translate the surface can be     positioned to its right location.    </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:choice>
				<xs:element name="plane" type="plane_type"/>
				<xs:element name="sphere" type="sphere_type"/>
				<xs:element name="torus" type="torus_type"/>
				<xs:element name="swept_surface" type="swept_surface_type"/>
				<xs:element name="nurbs_surface" type="nurbs_surface_type"/>
				<xs:element name="cone" type="cone_type"/>
				<xs:element name="cylinder">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="radius" type="float_type"/>
							<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:choice>
			<xs:element name="orient" type="orient_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="origin" type="origin_type" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type" use="optional">
			<xs:annotation>
				<xs:documentation>      The id of the surface.     </xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>      The name of the surface.     </xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="surfaces_type">
		<xs:sequence>
			<xs:element name="surface" type="surface_type" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="brep_type">
		<xs:annotation>
			<xs:documentation>     The brep element contains the complete topological     description of a static structure. There are also the     corresponding geometrical descriptions of the vertices,     edges and faces.    </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:annotation>
				<xs:documentation/>
			</xs:annotation>
			<xs:element name="curves" type="curves_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
							The curves element holds all the curves that
							are needed for the brep structure. Here are
							the curves that describes the kind of an
							edge, but here are also the curves that are
							needed to create a extrusion for a surface.
							This element is needed, if the edges element
							is present.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="surface_curves" type="surface_curves_type" minOccurs="0"/>
			<xs:element name="surfaces" type="surfaces_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
							The surfaces element holds all the surfaces
							that are needed for the brep structure. Here
							are the surfaces that describes the kind of
							a face. This element is needed, if the faces
							element is present.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="source" type="source_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
							The source elements define the access of the
							elements vertices, edges and faces to their
							geometric entities. At least one source
							element is needed for the vertices. If there
							are edges a second source element is needed
							for accessing the curves in the curve
							element by an IDREF_array. If there are
							faces the third source element is needed for
							accessing the surfaces in the surface
							element by an IDREF_array.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="vertices" type="vertices_type">
				<xs:annotation>
					<xs:documentation>
							This element defines all the vertices of an
							brep structure. Vertices are the base
							topological entity for all brep structures,
							so this element is ever needed.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="edges" type="edges_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
							This element defines all the edges of the
							brep structure.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="wires" type="wires_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
							This element defines all the wires of the
							brep structure.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="faces" type="faces_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
							This element defines all the faces of the
							brep structure.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="pcurves" type="pcurves_type" minOccurs="0"/>
			<xs:element name="shells" type="shells_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
							This element defines all the shells of the
							brep structure.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="solids" type="solids_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
							This element defines all the solids of the
							brep structure.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="geometry_type">
		<xs:annotation>
			<xs:documentation>
			Geometry describes the visual shape and appearance of an object in the scene.
			The geometry element categorizes the declaration of geometric information. Geometry is a 
			branch of mathematics that deals with the measurement, properties, and relationships of 
			points, lines, angles, surfaces, and solids.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The geometry element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:choice>
				<xs:element name="convex_mesh" type="convex_mesh_type">
					<xs:annotation>
						<xs:documentation>
								The geometry element may contain only
								one mesh or convex_mesh.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="mesh" type="mesh_type">
					<xs:annotation>
						<xs:documentation>
								The geometry element may contain only
								one mesh or convex_mesh.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="spline" type="spline_type"/>
				<xs:element name="brep" type="brep_type"/>
			</xs:choice>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="library_geometries_type">
		<xs:annotation>
			<xs:documentation>
			The library_geometries element declares a module of geometry elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The library_geometries element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="geometry" type="geometry_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There must be at least one geometry element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="limits_sub_type">
		<xs:simpleContent>
			<xs:extension base="float_type">
				<xs:attribute name="sid" type="sid_type"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="instance_joint_type">
		<xs:complexContent>
			<xs:restriction base="instance_with_extra_type"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:simpleType name="dynamic_limit_type">
		<xs:restriction base="float2_type"/>
	</xs:simpleType>
	<xs:complexType name="targetable_float4_type">
		<xs:simpleContent>
			<xs:extension base="float4_type">
				<xs:attribute name="sid" type="sid_type"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="rotate_type">
		<xs:annotation>
			<xs:documentation>
			The rotate element contains an angle and a mathematical vector that represents the axis of rotation.
			</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:restriction base="targetable_float4_type"/>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="link_type">
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="rotate" type="rotate_type"/>
				<xs:element name="translate" type="translate_type"/>
			</xs:choice>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="attachment_full">
					<xs:complexType>
						<xs:sequence>
							<xs:choice minOccurs="0" maxOccurs="unbounded">
								<xs:element name="rotate" type="rotate_type"/>
								<xs:element name="translate" type="translate_type"/>
							</xs:choice>
							<xs:element name="link" type="link_type"/>
						</xs:sequence>
						<xs:attribute name="joint" type="xs:token" use="required"/>
					</xs:complexType>
				</xs:element>
				<xs:element name="attachment_start">
					<xs:complexType>
						<xs:choice maxOccurs="unbounded">
							<xs:element name="rotate" type="rotate_type"/>
							<xs:element name="translate" type="translate_type"/>
						</xs:choice>
						<xs:attribute name="joint" type="xs:token" use="required"/>
					</xs:complexType>
				</xs:element>
				<xs:element name="attachment_end">
					<xs:complexType>
						<xs:choice minOccurs="0" maxOccurs="unbounded">
							<xs:element name="rotate" type="rotate_type"/>
							<xs:element name="translate" type="translate_type"/>
						</xs:choice>
						<xs:attribute name="joint" type="xs:token" use="required"/>
					</xs:complexType>
				</xs:element>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type"/>
		<xs:attribute name="name" type="xs:token"/>
	</xs:complexType>
	<xs:complexType name="rigid_constraint_type">
		<xs:annotation>
			<xs:documentation>
			This element allows for connecting components, such as rigid_body into complex physics models 
			with moveable parts.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="ref_attachment">
				<xs:annotation>
					<xs:documentation>
						Defines the attachment (to a rigid_body or a node) to be used as the reference-frame.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:choice minOccurs="0" maxOccurs="unbounded">
							<xs:element name="translate" type="translate_type">
								<xs:annotation>
									<xs:documentation>
										Allows you to "position" the attachment point.
										</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="rotate" type="rotate_type">
								<xs:annotation>
									<xs:documentation>
										Allows you to "position" the attachment point.
										</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:choice>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									The extra element may appear any number of times.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
					<xs:attribute name="rigid_body" type="xs:anyURI">
						<xs:annotation>
							<xs:documentation>
								The "rigid_body" attribute is a relative reference to a rigid-body within the same 
								physics_model.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="attachment">
				<xs:annotation>
					<xs:documentation>
						Defines an attachment to a rigid-body or a node.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:choice minOccurs="0" maxOccurs="unbounded">
							<xs:element name="translate" type="translate_type">
								<xs:annotation>
									<xs:documentation>
										Allows you to "position" the attachment point.
										</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="rotate" type="rotate_type">
								<xs:annotation>
									<xs:documentation>
										Allows you to "position" the attachment point.
										</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:choice>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									The extra element may appear any number of times.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
					<xs:attribute name="rigid_body" type="xs:anyURI">
						<xs:annotation>
							<xs:documentation>
								The "rigid_body" attribute is a relative reference to a rigid-body within the same physics_model.
								</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="technique_common">
				<xs:annotation>
					<xs:documentation>
						The technique_common element specifies the rigid_constraint information for the common profile 
						which all COLLADA implementations need to support.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="enabled" default="true" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									If false, the constraint doesn't exert any force or influence on the rigid bodies.
									</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:simpleContent>
									<xs:extension base="xs:boolean">
										<xs:attribute name="sid" type="sid_type">
											<xs:annotation>
												<xs:documentation>
													The sid attribute is a text string value containing the sub-identifier of this element. 
													This value must be unique within the scope of the parent element. Optional attribute.
													</xs:documentation>
											</xs:annotation>
										</xs:attribute>
									</xs:extension>
								</xs:simpleContent>
							</xs:complexType>
						</xs:element>
						<xs:element name="interpenetrate" default="false" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									Indicates whether the attached rigid bodies may inter-penetrate.
									</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:simpleContent>
									<xs:extension base="xs:boolean">
										<xs:attribute name="sid" type="sid_type">
											<xs:annotation>
												<xs:documentation>
													The sid attribute is a text string value containing the sub-identifier of this element. 
													This value must be unique within the scope of the parent element. Optional attribute.
													</xs:documentation>
											</xs:annotation>
										</xs:attribute>
									</xs:extension>
								</xs:simpleContent>
							</xs:complexType>
						</xs:element>
						<xs:element name="limits" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									The limits element provides a flexible way to specify the constraint limits (degrees of freedom 
									and ranges).
									</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="swing_cone_and_twist" minOccurs="0">
										<xs:annotation>
											<xs:documentation>
												The swing_cone_and_twist element describes the angular limits along each rotation axis in degrees.
												The the X and Y limits describe a "swing cone" and the Z limits describe the "twist angle" range 
												</xs:documentation>
										</xs:annotation>
										<xs:complexType>
											<xs:sequence>
												<xs:element name="min" type="targetable_float3_type" default="0.0 0.0 0.0" minOccurs="0">
													<xs:annotation>
														<xs:documentation>
															The minimum values for the limit.
															</xs:documentation>
													</xs:annotation>
												</xs:element>
												<xs:element name="max" type="targetable_float3_type" default="0.0 0.0 0.0" minOccurs="0">
													<xs:annotation>
														<xs:documentation>
															The maximum values for the limit.
															</xs:documentation>
													</xs:annotation>
												</xs:element>
											</xs:sequence>
										</xs:complexType>
									</xs:element>
									<xs:element name="linear" minOccurs="0">
										<xs:annotation>
											<xs:documentation>
												The linear element describes linear (translational) limits along each axis.
												</xs:documentation>
										</xs:annotation>
										<xs:complexType>
											<xs:sequence>
												<xs:element name="min" type="targetable_float3_type" default="0.0 0.0 0.0" minOccurs="0">
													<xs:annotation>
														<xs:documentation>
															The minimum values for the limit.
															</xs:documentation>
													</xs:annotation>
												</xs:element>
												<xs:element name="max" type="targetable_float3_type" default="0.0 0.0 0.0" minOccurs="0">
													<xs:annotation>
														<xs:documentation>
															The maximum values for the limit.
															</xs:documentation>
													</xs:annotation>
												</xs:element>
											</xs:sequence>
										</xs:complexType>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
						<xs:element name="spring" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									Spring, based on distance ("LINEAR") or angle ("ANGULAR"). 
									</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="angular" minOccurs="0">
										<xs:annotation>
											<xs:documentation>
												The angular spring properties.
												</xs:documentation>
										</xs:annotation>
										<xs:complexType>
											<xs:sequence>
												<xs:element name="stiffness" type="targetable_float_type" default="1.0" minOccurs="0">
													<xs:annotation>
														<xs:documentation>
															The stiffness (also called spring coefficient) has units of force/angle in degrees. 
															</xs:documentation>
													</xs:annotation>
												</xs:element>
												<xs:element name="damping" type="targetable_float_type" default="0.0" minOccurs="0">
													<xs:annotation>
														<xs:documentation>
															The spring damping coefficient.
															</xs:documentation>
													</xs:annotation>
												</xs:element>
												<xs:element name="target_value" type="targetable_float_type" default="0.0" minOccurs="0">
													<xs:annotation>
														<xs:documentation>
															The spring's target or resting distance.
															</xs:documentation>
													</xs:annotation>
												</xs:element>
											</xs:sequence>
										</xs:complexType>
									</xs:element>
									<xs:element name="linear" minOccurs="0">
										<xs:annotation>
											<xs:documentation>
												The linear spring properties.
												</xs:documentation>
										</xs:annotation>
										<xs:complexType>
											<xs:sequence>
												<xs:element name="stiffness" type="targetable_float_type" default="1.0" minOccurs="0">
													<xs:annotation>
														<xs:documentation>
															The stiffness (also called spring coefficient) has units of force/distance. 
															</xs:documentation>
													</xs:annotation>
												</xs:element>
												<xs:element name="damping" type="targetable_float_type" default="0.0" minOccurs="0">
													<xs:annotation>
														<xs:documentation>
															The spring damping coefficient.
															</xs:documentation>
													</xs:annotation>
												</xs:element>
												<xs:element name="target_value" type="targetable_float_type" default="0.0" minOccurs="0">
													<xs:annotation>
														<xs:documentation>
															The spring's target or resting distance.
															</xs:documentation>
													</xs:annotation>
												</xs:element>
											</xs:sequence>
										</xs:complexType>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="technique" type="technique_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						This element may contain any number of non-common profile techniques.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type" use="required">
			<xs:annotation>
				<xs:documentation>
					The sid attribute is a text string value containing the sub-identifier of this element. 
					This value must be unique within the scope of the parent element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="node_type">
		<xs:annotation>
			<xs:documentation>
			Nodes embody the hierarchical relationship of elements in the scene.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The node element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="lookat" type="lookat_type">
					<xs:annotation>
						<xs:documentation>
							The node element may contain any number of lookat elements.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="matrix" type="matrix_type">
					<xs:annotation>
						<xs:documentation>
							The node element may contain any number of matrix elements.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="rotate" type="rotate_type">
					<xs:annotation>
						<xs:documentation>
							The node element may contain any number of rotate elements.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="scale" type="scale_type">
					<xs:annotation>
						<xs:documentation>
							The node element may contain any number of scale elements.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="skew" type="skew_type">
					<xs:annotation>
						<xs:documentation>
							The node element may contain any number of skew elements.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:element name="translate" type="translate_type">
					<xs:annotation>
						<xs:documentation>
							The node element may contain any number of translate elements.
							</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:choice>
			<xs:element name="instance_camera" type="instance_camera_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The node element may instance any number of camera objects.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="instance_controller" type="instance_controller_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The node element may instance any number of controller objects.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="instance_geometry" type="instance_geometry_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The node element may instance any number of geometry objects.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="instance_light" type="instance_light_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The node element may instance any number of light objects.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="instance_node" type="instance_node_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The node element may instance any number of node elements or hierarchies objects.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="node" type="node_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The node element may be hierarchical and be the parent of any number of other node elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="sid" type="sid_type">
			<xs:annotation>
				<xs:documentation>
					The sid attribute is a text string value containing the sub-identifier of this element. 
					This value must be unique within the scope of the parent element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="type" type="node_enum" default="NODE">
			<xs:annotation>
				<xs:documentation>
					The type attribute indicates the type of the node element. The default value is "NODE". 
					Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="layer" type="list_of_names_type">
			<xs:annotation>
				<xs:documentation>
					The layer attribute indicates the names of the layers to which this node belongs.  For example, 
					a value of "foreground glowing" indicates that this node belongs to both the 'foreground' layer 
					and the 'glowing' layer.  The default value is empty, indicating that the node doesn't belong to 
					any layer.  Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="library_nodes_type">
		<xs:annotation>
			<xs:documentation>
			The library_nodes element declares a module of node elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The library_nodes element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="node" type="node_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There must be at least one node element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="visual_scene_type">
		<xs:annotation>
			<xs:documentation>
			The visual_scene element declares the base of the visual_scene hierarchy or scene graph. The 
			scene contains elements that comprise much of the visual and transformational information 
			content as created by the authoring tools.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The visual_scene element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="node" type="node_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The visual_scene element must have at least one node element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="evaluate_scene" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>The evaluate_scene element declares information specifying how to evaluate this visual_scene. There may be any number of evaluate_scene elements.  They are evaluated in order and particular one may be disabled via setting enabled=false.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="asset" type="asset_type" minOccurs="0"/>
						<xs:element name="render" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									The render element describes one effect pass to evaluate the scene.
									There must be at least one render element.
									</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="layer" type="xs:NCName" minOccurs="0" maxOccurs="unbounded">
										<xs:annotation>
											<xs:documentation>The layer element specifies which layer to render in this compositing step while evaluating the scene. You may specify any number of layers.  No layers mans that the entire scene will be used.		</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="instance_material" minOccurs="0">
										<xs:annotation>
											<xs:documentation>The instance_material element specifies which effect to render in this compositing step 
												while evaluating the scene.
												</xs:documentation>
										</xs:annotation>
										<xs:complexType>
											<xs:sequence>
												<xs:element name="technique_override" minOccurs="0">
													<xs:complexType>
														<xs:attribute name="ref" type="xs:NCName" use="required">
															<xs:annotation>
																<xs:documentation>technique</xs:documentation>
															</xs:annotation>
														</xs:attribute>
														<xs:attribute name="pass" type="xs:NCName">
															<xs:annotation>
																<xs:documentation>Explicitly select one pass.  If empty then use all passes of the technique.</xs:documentation>
															</xs:annotation>
														</xs:attribute>
													</xs:complexType>
												</xs:element>
												<xs:element name="bind" minOccurs="0" maxOccurs="unbounded">
													<xs:annotation>
														<xs:documentation>
						The bind element binds values to effect parameters upon instantiation.
						</xs:documentation>
													</xs:annotation>
													<xs:complexType>
														<xs:attribute name="semantic" type="xs:NCName" use="required">
															<xs:annotation>
																<xs:documentation>
								The semantic attribute specifies which effect parameter to bind.
								</xs:documentation>
															</xs:annotation>
														</xs:attribute>
														<xs:attribute name="target" type="xs:token" use="required">
															<xs:annotation>
																<xs:documentation>
								The target attribute specifies the location of the value to bind to the specified semantic. 
								This text string is a path-name following a simple syntax described in the ?Addressing Syntax? 
								section.
								</xs:documentation>
															</xs:annotation>
														</xs:attribute>
													</xs:complexType>
												</xs:element>
												<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
													<xs:annotation>
														<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
													</xs:annotation>
												</xs:element>
											</xs:sequence>
											<xs:attribute name="url" type="xs:anyURI" use="required">
												<xs:annotation>
													<xs:documentation>URL to a material		</xs:documentation>
												</xs:annotation>
											</xs:attribute>
										</xs:complexType>
									</xs:element>
									<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
										<xs:annotation>
											<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
								<xs:attribute name="sid" type="sid_type"/>
								<xs:attribute name="name" type="xs:token">
									<xs:annotation>
										<xs:documentation>
								The name attribute is the text string name of this element. Optional attribute.
								</xs:documentation>
									</xs:annotation>
								</xs:attribute>
								<xs:attribute name="camera_node" type="xs:anyURI" use="optional">
									<xs:annotation>
										<xs:documentation>The camera_node attribute refers to a node that contains a camera describing the viewpoint to render this compositing step from.						</xs:documentation>
									</xs:annotation>
								</xs:attribute>
							</xs:complexType>
						</xs:element>
						<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
					<xs:attribute name="id" type="xs:ID"/>
					<xs:attribute name="sid" type="sid_type"/>
					<xs:attribute name="name" type="xs:token"/>
					<xs:attribute name="enable" type="xs:boolean" default="true">
						<xs:annotation>
							<xs:documentation>allow this to be disabled and hense skipped durring evaluation.  This is useful for debug.</xs:documentation>
						</xs:annotation>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="optional">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. This 
					value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="library_visual_scenes_type">
		<xs:annotation>
			<xs:documentation>
			The library_visual_scenes element declares a module of visual_scene elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The library_visual_scenes element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="visual_scene" type="visual_scene_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There must be at least one visual_scene element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="rigid_body_type">
		<xs:annotation>
			<xs:documentation>
			This element allows for describing simulated bodies that do not deform. These bodies may or may 
			not be connected by constraints (hinge, ball-joint etc.).  Rigid-bodies, constraints etc. are 
			encapsulated in physics_model elements to allow for instantiating complex models.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="technique_common">
				<xs:annotation>
					<xs:documentation>
						The technique_common element specifies the rigid_body information for the common profile which all 
						COLLADA implementations need to support.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="dynamic" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									If false, the rigid_body is not moveable
									</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:simpleContent>
									<xs:extension base="xs:boolean">
										<xs:attribute name="sid" type="sid_type">
											<xs:annotation>
												<xs:documentation>
													The sid attribute is a text string value containing the sub-identifier of this element. 
													This value must be unique within the scope of the parent element. Optional attribute.
													</xs:documentation>
											</xs:annotation>
										</xs:attribute>
									</xs:extension>
								</xs:simpleContent>
							</xs:complexType>
						</xs:element>
						<xs:element name="mass" type="targetable_float_type" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									The total mass of the rigid-body
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="mass_frame" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									Defines the center and orientation of mass of the rigid-body relative to the local origin of the 
									"root" shape.This makes the off-diagonal elements of the inertia tensor (products of inertia) all 
									0 and allows us to just store the diagonal elements (moments of inertia).
									</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:choice maxOccurs="unbounded">
									<xs:element name="translate" type="translate_type"/>
									<xs:element name="rotate" type="rotate_type"/>
								</xs:choice>
							</xs:complexType>
						</xs:element>
						<xs:element name="inertia" type="targetable_float3_type" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									float3 - The diagonal elements of the inertia tensor (moments of inertia), which is represented 
									in the local frame of the center of mass. See above.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:choice minOccurs="0">
							<xs:element name="instance_physics_material" type="instance_physics_material_type">
								<xs:annotation>
									<xs:documentation>
										References a physics_material for the rigid_body.
										</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="physics_material" type="physics_material_type">
								<xs:annotation>
									<xs:documentation>
										Defines a physics_material for the rigid_body.
										</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:choice>
						<xs:element name="shape" maxOccurs="unbounded">
							<xs:annotation>
								<xs:documentation>
									This element allows for describing components of a rigid_body.
									</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="hollow" minOccurs="0">
										<xs:annotation>
											<xs:documentation>
												If true, the mass is distributed along the surface of the shape
												</xs:documentation>
										</xs:annotation>
										<xs:complexType>
											<xs:simpleContent>
												<xs:extension base="xs:boolean">
													<xs:attribute name="sid" type="sid_type">
														<xs:annotation>
															<xs:documentation>
																The sid attribute is a text string value containing the sub-identifier of this element. 
																This value must be unique within the scope of the parent element. Optional attribute.
																</xs:documentation>
														</xs:annotation>
													</xs:attribute>
												</xs:extension>
											</xs:simpleContent>
										</xs:complexType>
									</xs:element>
									<xs:element name="mass" type="targetable_float_type" minOccurs="0">
										<xs:annotation>
											<xs:documentation>
												The mass of the shape.
												</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:element name="density" type="targetable_float_type" minOccurs="0">
										<xs:annotation>
											<xs:documentation>
												The density of the shape.
												</xs:documentation>
										</xs:annotation>
									</xs:element>
									<xs:choice minOccurs="0">
										<xs:element name="instance_physics_material" type="instance_physics_material_type">
											<xs:annotation>
												<xs:documentation>
													References a physics_material for the shape.
													</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="physics_material" type="physics_material_type">
											<xs:annotation>
												<xs:documentation>
													Defines a physics_material for the shape.
													</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:choice>
									<xs:choice>
										<xs:element name="instance_geometry" type="instance_geometry_type">
											<xs:annotation>
												<xs:documentation>
													Instances a geometry to use to define this shape.
													</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="plane" type="plane_type">
											<xs:annotation>
												<xs:documentation>
													Defines a plane to use for this shape.
													</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="box" type="box_type">
											<xs:annotation>
												<xs:documentation>
													Defines a box to use for this shape.
													</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="sphere" type="sphere_type">
											<xs:annotation>
												<xs:documentation>
													Defines a sphere to use for this shape.
													</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="cylinder" type="cylinder_type">
											<xs:annotation>
												<xs:documentation>
													Defines a cyliner to use for this shape.
													</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="capsule" type="capsule_type">
											<xs:annotation>
												<xs:documentation>
													Defines a capsule to use for this shape.
													</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:choice>
									<xs:choice minOccurs="0" maxOccurs="unbounded">
										<xs:element name="translate" type="translate_type">
											<xs:annotation>
												<xs:documentation>
													Allows a tranformation for the shape.
													</xs:documentation>
											</xs:annotation>
										</xs:element>
										<xs:element name="rotate" type="rotate_type">
											<xs:annotation>
												<xs:documentation>
													Allows a tranformation for the shape.
													</xs:documentation>
											</xs:annotation>
										</xs:element>
									</xs:choice>
									<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
										<xs:annotation>
											<xs:documentation>
												The extra element may appear any number of times.
												</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="technique" type="technique_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						This element may contain any number of non-common profile techniques.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID"/>
		<xs:attribute name="sid" type="sid_type" use="required">
			<xs:annotation>
				<xs:documentation>
					The sid attribute is a text string value containing the sub-identifier of this element. This 
					value must be unique within the scope of the parent element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="instance_rigid_body_type">
		<xs:annotation>
			<xs:documentation>
			This element allows instancing a rigid_body within an instance_physics_model. 
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="technique_common">
				<xs:annotation>
					<xs:documentation>
						The technique_common element specifies the instance_rigid_body information for the common 
						profile which all COLLADA implementations need to support.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="angular_velocity" type="float3_type" default="0.0 0.0 0.0" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									Specifies the initial angular velocity of the rigid_body instance in degrees per second 
									around each axis, in the form of an X-Y-Z Euler rotation.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="velocity" type="float3_type" default="0.0 0.0 0.0" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									Specifies the initial linear velocity of the rigid_body instance.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="dynamic" default="true" minOccurs="0">
							<xs:complexType>
								<xs:simpleContent>
									<xs:extension base="xs:boolean">
										<xs:attribute name="sid" type="sid_type">
											<xs:annotation>
												<xs:documentation>
													The sid attribute is a text string value containing the sub-identifier of this element. 
													This value must be unique within the scope of the parent element. Optional attribute.
													</xs:documentation>
											</xs:annotation>
										</xs:attribute>
									</xs:extension>
								</xs:simpleContent>
							</xs:complexType>
						</xs:element>
						<xs:element name="mass" type="targetable_float_type" minOccurs="0"/>
						<xs:element name="mass_frame" minOccurs="0">
							<xs:complexType>
								<xs:choice maxOccurs="unbounded">
									<xs:element name="translate" type="translate_type"/>
									<xs:element name="rotate" type="rotate_type"/>
								</xs:choice>
							</xs:complexType>
						</xs:element>
						<xs:element name="inertia" type="targetable_float3_type" minOccurs="0"/>
						<xs:choice minOccurs="0">
							<xs:element name="instance_physics_material" type="instance_physics_material_type"/>
							<xs:element name="physics_material" type="physics_material_type"/>
						</xs:choice>
						<xs:element name="shape" minOccurs="0" maxOccurs="unbounded">
							<xs:complexType>
								<xs:sequence>
									<xs:element name="hollow" minOccurs="0">
										<xs:complexType>
											<xs:simpleContent>
												<xs:extension base="xs:boolean">
													<xs:attribute name="sid" type="sid_type">
														<xs:annotation>
															<xs:documentation>
																The sid attribute is a text string value containing the sub-identifier of this element. This value must be unique within the scope of the parent element. Optional attribute.
																</xs:documentation>
														</xs:annotation>
													</xs:attribute>
												</xs:extension>
											</xs:simpleContent>
										</xs:complexType>
									</xs:element>
									<xs:element name="mass" type="targetable_float_type" minOccurs="0"/>
									<xs:element name="density" type="targetable_float_type" minOccurs="0"/>
									<xs:choice minOccurs="0">
										<xs:element name="instance_physics_material" type="instance_physics_material_type"/>
										<xs:element name="physics_material" type="physics_material_type"/>
									</xs:choice>
									<xs:choice>
										<xs:element name="instance_geometry" type="instance_geometry_type"/>
										<xs:element name="plane" type="plane_type"/>
										<xs:element name="box" type="box_type"/>
										<xs:element name="sphere" type="sphere_type"/>
										<xs:element name="cylinder" type="cylinder_type"/>
										<xs:element name="capsule" type="capsule_type"/>
									</xs:choice>
									<xs:choice minOccurs="0" maxOccurs="unbounded">
										<xs:element name="translate" type="translate_type"/>
										<xs:element name="rotate" type="rotate_type"/>
									</xs:choice>
									<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
										<xs:annotation>
											<xs:documentation>
												The extra element may appear any number of times.
												</xs:documentation>
										</xs:annotation>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="technique" type="technique_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						This element may contain any number of non-common profile techniques.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="body" type="xs:NCName" use="required">
			<xs:annotation>
				<xs:documentation>
					The body attribute indicates which rigid_body to instantiate. Required attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="sid" type="sid_type">
			<xs:annotation>
				<xs:documentation>
					The sid attribute is a text string value containing the sub-identifier of this element. This 
					value must be unique within the scope of the parent element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="target" type="xs:anyURI" use="required">
			<xs:annotation>
				<xs:documentation>
					The target attribute indicates which node is influenced by this rigid_body instance. 
					Required attribute
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="instance_physics_model_type">
		<xs:annotation>
			<xs:documentation>
			This element allows instancing physics model within another physics model, or in a physics scene.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="instance_force_field" type="instance_force_field_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The instance_physics_model element may instance any number of force_field elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="instance_rigid_body" type="instance_rigid_body_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The instance_physics_model element may instance any number of rigid_body elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="instance_rigid_constraint" type="instance_rigid_constraint_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The instance_physics_model element may instance any number of rigid_constraint elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="url" type="xs:anyURI" use="required">
			<xs:annotation>
				<xs:documentation>
					The url attribute refers to resource.  This may refer to a local resource using a relative URL 
					fragment identifier that begins with the "#" character. The url attribute may refer to an external 
					resource using an absolute or relative URL.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="sid" type="sid_type">
			<xs:annotation>
				<xs:documentation>
					The sid attribute is a text string value containing the sub-identifier of this element. This 
					value must be unique within the scope of the parent element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="parent" type="xs:anyURI">
			<xs:annotation>
				<xs:documentation>
					The parent attribute points to the id of a node in the visual scene. This allows a physics model 
					to be instantiated under a specific transform node, which will dictate the initial position and 
					orientation, and could be animated to influence kinematic rigid bodies.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="physics_model_type">
		<xs:annotation>
			<xs:documentation>
			This element allows for building complex combinations of rigid-bodies and constraints that 
			may be instantiated multiple times.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The physics_model element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="rigid_body" type="rigid_body_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The physics_model may define any number of rigid_body elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="rigid_constraint" type="rigid_constraint_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The physics_model may define any number of rigid_constraint elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="instance_physics_model" type="instance_physics_model_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The physics_model may instance any number of other physics_model elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="library_physics_models_type">
		<xs:annotation>
			<xs:documentation>
			The library_physics_models element declares a module of physics_model elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The library_physics_models element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="physics_model" type="physics_model_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There must be at least one physics_model element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="physics_scene_type">
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The physics_scene element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="instance_force_field" type="instance_force_field_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There may be any number of instance_force_field elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="instance_physics_model" type="instance_physics_model_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There may be any number of instance_physics_model elements.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="technique_common">
				<xs:annotation>
					<xs:documentation>
						The technique_common element specifies the physics_scene information for the common profile 
						which all COLLADA implementations need to support.
						</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="gravity" type="targetable_float3_type" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									The gravity vector to use for the physics_scene.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
						<xs:element name="time_step" type="targetable_float_type" minOccurs="0">
							<xs:annotation>
								<xs:documentation>
									The time_step for the physics_scene.
									</xs:documentation>
							</xs:annotation>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="technique" type="technique_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						This element may contain any number of non-common profile techniques.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="library_physics_scenes_type">
		<xs:annotation>
			<xs:documentation>
			The library_physics_scenes element declares a module of physics_scene elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The library_physics_scenes element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="physics_scene" type="physics_scene_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There must be at least one physics_scene element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="kinematics_newparam_type">
		<xs:choice>
			<xs:element name="float" type="float_type"/>
			<xs:element name="int" type="int_type"/>
			<xs:element name="SIDREF" type="sidref_type"/>
			<xs:element name="bool" type="xs:boolean"/>
		</xs:choice>
		<xs:attribute name="sid" type="sid_type"/>
	</xs:complexType>
	<xs:complexType name="kinematics_frame_type">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="translate" type="translate_type"/>
			<xs:element name="rotate" type="rotate_type"/>
		</xs:choice>
		<xs:attribute name="link" type="xs:token"/>
	</xs:complexType>
	<xs:complexType name="common_param_type">
		<xs:simpleContent>
			<xs:extension base="xs:token"/>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="common_int_or_param_type">
		<xs:choice>
			<xs:element name="int" type="int_type"/>
			<xs:element name="param" type="common_param_type"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="common_bool_or_param_type">
		<xs:choice>
			<xs:element name="bool" type="xs:boolean"/>
			<xs:element name="param" type="common_param_type"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="common_float_or_param_type">
		<xs:choice>
			<xs:element name="float" type="float_type"/>
			<xs:element name="param" type="common_param_type"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="kinematics_limits_type">
		<xs:sequence>
			<xs:element name="min" type="common_float_or_param_type"/>
			<xs:element name="max" type="common_float_or_param_type"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="common_sidref_or_param_type">
		<xs:choice>
			<xs:element name="SIDREF" type="sidref_type"/>
			<xs:element name="param" type="common_param_type"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="bind_joint_axis_type">
		<xs:sequence>
			<xs:element name="axis" type="common_sidref_or_param_type"/>
			<xs:element name="value" type="common_float_or_param_type"/>
		</xs:sequence>
		<xs:attribute name="target" type="xs:token"/>
	</xs:complexType>
	<xs:complexType name="bind_kinematics_model_type">
		<xs:complexContent>
			<xs:extension base="common_sidref_or_param_type">
				<xs:attribute name="node" type="xs:token"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="kinematics_connect_param_type">
		<xs:attribute name="ref" type="xs:token" use="required"/>
	</xs:complexType>
	<xs:complexType name="kinematics_setparam_type">
		<xs:choice>
			<xs:element name="float" type="float_type"/>
			<xs:element name="int" type="int_type"/>
			<xs:element name="SIDREF" type="sidref_type"/>
			<xs:element name="bool" type="xs:boolean"/>
			<xs:element name="connect_param" type="kinematics_connect_param_type"/>
		</xs:choice>
		<xs:attribute name="ref" type="xs:token" use="required"/>
	</xs:complexType>
	<xs:complexType name="instance_kinematics_scene_type">
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0"/>
			<xs:element name="newparam" type="kinematics_newparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="setparam" type="kinematics_setparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="bind_kinematics_model" type="bind_kinematics_model_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="bind_joint_axis" type="bind_joint_axis_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="url" type="xs:anyURI" use="required"/>
		<xs:attribute name="sid" type="sid_type"/>
		<xs:attribute name="name" type="xs:token"/>
	</xs:complexType>
	<xs:complexType name="kinematics_index_type">
		<xs:complexContent>
			<xs:extension base="common_int_or_param_type">
				<xs:attribute name="semantic" type="xs:NMTOKEN"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="kinematics_param_type">
		<xs:attribute name="ref" type="xs:token" use="required"/>
	</xs:complexType>
	<xs:complexType name="kinematics_bind_type">
		<xs:choice>
			<xs:element name="param" type="kinematics_param_type"/>
			<xs:element name="bool" type="xs:boolean"/>
			<xs:element name="float" type="float_type"/>
			<xs:element name="int" type="int_type"/>
			<xs:element name="SIDREF" type="sidref_type"/>
		</xs:choice>
		<xs:attribute name="symbol" type="xs:NCName" use="required"/>
	</xs:complexType>
	<xs:complexType name="motion_axis_info_type">
		<xs:sequence>
			<xs:element name="bind" type="kinematics_bind_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="newparam" type="kinematics_newparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="setparam" type="kinematics_setparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="speed" type="common_float_or_param_type" minOccurs="0"/>
			<xs:element name="acceleration" type="common_float_or_param_type" minOccurs="0"/>
			<xs:element name="deceleration" type="common_float_or_param_type" minOccurs="0"/>
			<xs:element name="jerk" type="common_float_or_param_type" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type"/>
		<xs:attribute name="axis" type="xs:token" use="required"/>
		<xs:attribute name="name" type="xs:token"/>
	</xs:complexType>
	<xs:complexType name="instance_kinematics_model_type">
		<xs:sequence>
			<xs:element name="bind" type="kinematics_bind_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="newparam" type="kinematics_newparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="setparam" type="kinematics_setparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="url" type="xs:anyURI" use="required"/>
		<xs:attribute name="sid" type="sid_type"/>
		<xs:attribute name="name" type="xs:token"/>
	</xs:complexType>
	<xs:complexType name="instance_articulated_system_type">
		<xs:sequence>
			<xs:element name="bind" type="kinematics_bind_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="setparam" type="kinematics_setparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="newparam" type="kinematics_newparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type"/>
		<xs:attribute name="url" type="xs:anyURI" use="required"/>
		<xs:attribute name="name" type="xs:token"/>
	</xs:complexType>
	<xs:complexType name="kinematics_scene_type">
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0"/>
			<xs:element name="instance_kinematics_model" type="instance_kinematics_model_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="instance_articulated_system" type="instance_articulated_system_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID"/>
		<xs:attribute name="name" type="xs:token"/>
	</xs:complexType>
	<xs:complexType name="library_kinematics_scenes_type">
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0"/>
			<xs:element name="kinematics_scene" type="kinematics_scene_type" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID"/>
		<xs:attribute name="name" type="xs:token"/>
	</xs:complexType>
	<xs:complexType name="common_float2_or_param_type">
		<xs:choice>
			<xs:element name="float2" type="float2_type"/>
			<xs:element name="param" type="common_param_type"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="motion_effector_info_type">
		<xs:sequence>
			<xs:element name="bind" type="kinematics_bind_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="newparam" type="kinematics_newparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="setparam" type="kinematics_setparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="speed" type="common_float2_or_param_type" minOccurs="0"/>
			<xs:element name="acceleration" type="common_float2_or_param_type" minOccurs="0"/>
			<xs:element name="deceleration" type="common_float2_or_param_type" minOccurs="0"/>
			<xs:element name="jerk" type="common_float2_or_param_type" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type"/>
		<xs:attribute name="name" type="xs:token"/>
	</xs:complexType>
	<xs:complexType name="motion_technique_type">
		<xs:sequence>
			<xs:element name="axis_info" type="motion_axis_info_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="effector_info" type="motion_effector_info_type" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="motion_type">
		<xs:sequence>
			<xs:element name="instance_articulated_system" type="instance_articulated_system_type"/>
			<xs:element name="technique_common" type="motion_technique_type"/>
			<xs:element name="technique" type="technique_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="minmax_type">
		<xs:simpleContent>
			<xs:extension base="float_type">
				<xs:attribute name="name" type="xs:token"/>
				<xs:attribute name="sid" type="sid_type"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="joint_limits_type">
		<xs:sequence>
			<xs:element name="min" type="minmax_type" minOccurs="0"/>
			<xs:element name="max" type="minmax_type" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="axis_type">
		<xs:simpleContent>
			<xs:extension base="float3_type">
				<xs:attribute name="sid" type="sid_type"/>
				<xs:attribute name="name" type="xs:token"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="axis_constraint_type">
		<xs:sequence>
			<xs:element name="axis" type="axis_type"/>
			<xs:element name="limits" type="joint_limits_type" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type"/>
	</xs:complexType>
	<xs:complexType name="joint_type">
		<xs:sequence>
			<xs:choice maxOccurs="unbounded">
				<xs:element name="prismatic" type="axis_constraint_type"/>
				<xs:element name="revolute" type="axis_constraint_type"/>
			</xs:choice>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID"/>
		<xs:attribute name="name" type="xs:token"/>
		<xs:attribute name="sid" type="sid_type"/>
	</xs:complexType>
	<xs:complexType name="library_joints_type">
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0"/>
			<xs:element name="joint" type="joint_type" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="optional"/>
		<xs:attribute name="name" type="xs:token" use="optional"/>
	</xs:complexType>
	<xs:complexType name="formula_technique_type">
		<xs:sequence>
			<xs:element ref="math:math"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="formula_newparam_type">
		<xs:choice>
			<xs:element name="float" type="float_type"/>
			<xs:element name="int" type="int_type"/>
			<xs:element name="SIDREF" type="sidref_type"/>
			<xs:element name="bool" type="xs:boolean"/>
		</xs:choice>
		<xs:attribute name="sid" type="sid_type"/>
	</xs:complexType>
	<xs:complexType name="formula_setparam_type">
		<xs:choice>
			<xs:element name="float" type="float_type"/>
			<xs:element name="int" type="int_type"/>
			<xs:element name="SIDREF" type="sidref_type"/>
			<xs:element name="bool" type="xs:boolean"/>
			<xs:element name="connect_param" type="kinematics_connect_param_type"/>
		</xs:choice>
		<xs:attribute name="ref" type="xs:token" use="required"/>
	</xs:complexType>
	<xs:complexType name="instance_formula_type">
		<xs:sequence>
			<xs:element name="setparam" type="formula_setparam_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type"/>
		<xs:attribute name="name" type="xs:token"/>
		<xs:attribute name="url" type="xs:anyURI"/>
	</xs:complexType>
	<xs:complexType name="animation_clip_type">
		<xs:annotation>
			<xs:documentation>
			The animation_clip element defines a section of the animation curves to be used together as 
			an animation clip.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The animation_clip element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="instance_animation" type="instance_with_extra_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The animation_clip must instance at least one animation element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="instance_formula" type="instance_formula_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="start" type="float_type" default="0.0">
			<xs:annotation>
				<xs:documentation>
					The start attribute is the time in seconds of the beginning of the clip.  This time is 
					the same as that used in the key-frame data and is used to determine which set of 
					key-frames will be included in the clip.  The start time does not specify when the clip 
					will be played.  If the time falls between two keyframes of a referenced animation, an 
					interpolated value should be used.  The default value is 0.0.  Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="end" type="float_type">
			<xs:annotation>
				<xs:documentation>
					The end attribute is the time in seconds of the end of the clip.  This is used in the 
					same way as the start time.  If end is not specified, the value is taken to be the end 
					time of the longest animation.  Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="library_animation_clips_type">
		<xs:annotation>
			<xs:documentation>
			The library_animation_clips element declares a module of animation_clip elements.
			</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0">
				<xs:annotation>
					<xs:documentation>
						The library_animation_clips element may contain an asset element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="animation_clip" type="animation_clip_type" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						There must be at least one animation_clip element.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID">
			<xs:annotation>
				<xs:documentation>
					The id attribute is a text string containing the unique identifier of this element. 
					This value must be unique within the instance document. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="name" type="xs:token">
			<xs:annotation>
				<xs:documentation>
					The name attribute is the text string name of this element. Optional attribute.
					</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="formula_type">
		<xs:sequence>
			<xs:element name="newparam" type="formula_newparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="target" type="common_float_or_param_type"/>
			<xs:element name="technique_common" type="formula_technique_type"/>
			<xs:element name="technique" type="technique_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID"/>
		<xs:attribute name="name" type="xs:token"/>
		<xs:attribute name="sid" type="sid_type"/>
	</xs:complexType>
	<xs:complexType name="kinematics_model_technique_type">
		<xs:sequence>
			<xs:element name="newparam" type="kinematics_newparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="instance_joint" type="instance_joint_type"/>
				<xs:element name="joint" type="joint_type"/>
			</xs:choice>
			<xs:element name="link" type="link_type" maxOccurs="unbounded"/>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="formula" type="formula_type"/>
				<xs:element name="instance_formula" type="instance_formula_type"/>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="kinematics_model_type">
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0"/>
			<xs:element name="technique_common" type="kinematics_model_technique_type"/>
			<xs:element name="technique" type="technique_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID"/>
		<xs:attribute name="name" type="xs:token"/>
	</xs:complexType>
	<xs:complexType name="library_kinematics_models_type">
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0"/>
			<xs:element name="kinematics_model" type="kinematics_model_type" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID"/>
		<xs:attribute name="name" type="xs:token"/>
	</xs:complexType>
	<xs:complexType name="kinematics_axis_info_type">
		<xs:sequence>
			<xs:element name="newparam" type="kinematics_newparam_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="active" type="common_bool_or_param_type" minOccurs="0"/>
			<xs:element name="locked" type="common_bool_or_param_type" minOccurs="0"/>
			<xs:element name="index" type="kinematics_index_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="limits" type="kinematics_limits_type" minOccurs="0"/>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="formula" type="formula_type"/>
				<xs:element name="instance_formula" type="instance_formula_type"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="sid" type="sid_type"/>
		<xs:attribute name="name" type="xs:token"/>
		<xs:attribute name="axis" type="xs:token" use="required"/>
	</xs:complexType>
	<xs:complexType name="kinematics_technique_type">
		<xs:sequence>
			<xs:element name="axis_info" type="kinematics_axis_info_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="frame_origin" type="kinematics_frame_type"/>
			<xs:element name="frame_tip" type="kinematics_frame_type"/>
			<xs:element name="frame_tcp" type="kinematics_frame_type" minOccurs="0"/>
			<xs:element name="frame_object" type="kinematics_frame_type" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="kinematics_type">
		<xs:sequence>
			<xs:element name="instance_kinematics_model" type="instance_kinematics_model_type" maxOccurs="unbounded"/>
			<xs:element name="technique_common" type="kinematics_technique_type"/>
			<xs:element name="technique" type="technique_type" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="articulated_system_type">
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0"/>
			<xs:choice>
				<xs:element name="kinematics" type="kinematics_type"/>
				<xs:element name="motion" type="motion_type"/>
			</xs:choice>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID"/>
		<xs:attribute name="name" type="xs:token"/>
	</xs:complexType>
	<xs:complexType name="library_articulated_systems_type">
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0"/>
			<xs:element name="articulated_system" type="articulated_system_type" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID"/>
		<xs:attribute name="name" type="xs:token"/>
	</xs:complexType>
	<xs:complexType name="library_formulas_type">
		<xs:sequence>
			<xs:element name="asset" type="asset_type" minOccurs="0"/>
			<xs:element name="formula" type="formula_type" maxOccurs="unbounded"/>
			<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID"/>
		<xs:attribute name="name" type="xs:token"/>
	</xs:complexType>
	<xs:element name="COLLADA">
		<xs:annotation>
			<xs:appinfo>enable-xmlns</xs:appinfo>
			<xs:documentation>
			The COLLADA element declares the root of the document that comprises some of the content 
			in the COLLADA schema.
			</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="asset" type="asset_type">
					<xs:annotation>
						<xs:documentation>
						The COLLADA element must contain an asset element.
						</xs:documentation>
					</xs:annotation>
				</xs:element>
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element name="library_animations" type="library_animations_type">
						<xs:annotation>
							<xs:documentation>
								The COLLADA element may contain any
								number of library_animations elements.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="library_animation_clips" type="library_animation_clips_type">
						<xs:annotation>
							<xs:documentation>
								The COLLADA element may contain any
								number of library_animation_clips
								elements.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="library_cameras" type="library_cameras_type">
						<xs:annotation>
							<xs:documentation>
								The COLLADA element may contain any
								number of library_cameras elements.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="library_controllers" type="library_controllers_type">
						<xs:annotation>
							<xs:documentation>
								The COLLADA element may contain any
								number of library_controllerss elements.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="library_geometries" type="library_geometries_type">
						<xs:annotation>
							<xs:documentation>
								The COLLADA element may contain any
								number of library_geometriess elements.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="library_effects" type="library_effects_type">
						<xs:annotation>
							<xs:documentation>
								The COLLADA element may contain any
								number of library_effects elements.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="library_force_fields" type="library_force_fields_type">
						<xs:annotation>
							<xs:documentation>
								The COLLADA element may contain any
								number of library_force_fields elements.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="library_images" type="library_images_type">
						<xs:annotation>
							<xs:documentation>
								The COLLADA element may contain any
								number of library_images elements.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="library_lights" type="library_lights_type">
						<xs:annotation>
							<xs:documentation>
								The COLLADA element may contain any
								number of library_lights elements.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="library_materials" type="library_materials_type">
						<xs:annotation>
							<xs:documentation>
								The COLLADA element may contain any
								number of library_materials elements.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="library_nodes" type="library_nodes_type">
						<xs:annotation>
							<xs:documentation>
								The COLLADA element may contain any
								number of library_nodes elements.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="library_physics_materials" type="library_physics_materials_type">
						<xs:annotation>
							<xs:documentation>
								The COLLADA element may contain any
								number of library_materials elements.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="library_physics_models" type="library_physics_models_type">
						<xs:annotation>
							<xs:documentation>
								The COLLADA element may contain any
								number of library_physics_models
								elements.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="library_physics_scenes" type="library_physics_scenes_type">
						<xs:annotation>
							<xs:documentation>
								The COLLADA element may contain any
								number of library_physics_scenes
								elements.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="library_visual_scenes" type="library_visual_scenes_type">
						<xs:annotation>
							<xs:documentation>
								The COLLADA element may contain any
								number of library_visual_scenes
								elements.
							</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element name="library_joints" type="library_joints_type"/>
					<xs:element name="library_kinematics_models" type="library_kinematics_models_type"/>
					<xs:element name="library_articulated_systems" type="library_articulated_systems_type"/>
					<xs:element name="library_kinematics_scenes" type="library_kinematics_scenes_type"/>
					<xs:element name="library_formulas" type="library_formulas_type"/>
				</xs:choice>
				<xs:element name="scene" minOccurs="0">
					<xs:annotation>
						<xs:documentation>
						The scene embodies the entire set of information that can be visualized from the 
						contents of a COLLADA resource. The scene element declares the base of the scene 
						hierarchy or scene graph. The scene contains elements that comprise much of the 
						visual and transformational information content as created by the authoring tools.
						</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element name="instance_physics_scene" type="instance_with_extra_type" minOccurs="0" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>
										The instance_physics_scene
										element declares the
										instantiation of a COLLADA
										physics_scene resource. The
										instance_physics_scene element
										may appear any number of times.
									</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="instance_visual_scene" type="instance_with_extra_type" minOccurs="0">
								<xs:annotation>
									<xs:documentation>
										The instance_visual_scene
										element declares the
										instantiation of a COLLADA
										visual_scene resource. The
										instance_visual_scene element
										may only appear once.
									</xs:documentation>
								</xs:annotation>
							</xs:element>
							<xs:element name="instance_kinematics_scene" type="instance_kinematics_scene_type" minOccurs="0" maxOccurs="unbounded"/>
							<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
								<xs:annotation>
									<xs:documentation>
										The extra element may appear any
										number of times.
									</xs:documentation>
								</xs:annotation>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="extra" type="extra_type" minOccurs="0" maxOccurs="unbounded">
					<xs:annotation>
						<xs:documentation>
						The extra element may appear any number of times.
						</xs:documentation>
					</xs:annotation>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="version" type="version_enum" use="required">
				<xs:annotation>
					<xs:documentation>
						The version attribute is the COLLADA schema revision with which the instance document 
						conforms. Required Attribute.
					</xs:documentation>
				</xs:annotation>
			</xs:attribute>
			<xs:attribute ref="xml:base">
				<xs:annotation>
					<xs:documentation>
					The xml:base attribute allows you to define the base URI for this COLLADA document. See
					http://www.w3.org/TR/xmlbase/ for more information.
					</xs:documentation>
				</xs:annotation>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
</xs:schema>
